import itertools import random X = {1, 2, 3, 4} Y = {'a', 'b', 'c'} cartesian_product = set(itertools.product(X, Y)) print("X 和 Y 的笛卡尔积:", cartesian_product) subset = set(random.sample(cartesian_product, random.randint(1, len(cartesian_product)))) print("随机生成的关系: ", subset)优化成Python3.10的版本
时间: 2024-01-15 15:04:53 浏览: 124
Python itertools.product方法代码实例
在 Python 3.10 中,可以使用新的 `random.sample` 函数的变体—— `random.sample.pop` 来实现更优雅的代码。
```
import itertools
import random
X = {1, 2, 3, 4}
Y = {'a', 'b', 'c'}
cartesian_product = set(itertools.product(X, Y))
print("X 和 Y 的笛卡尔积:", cartesian_product)
subset_size = random.randint(1, len(cartesian_product))
subset = {cartesian_product.pop() for _ in range(subset_size)}
print("随机生成的关系: ", subset)
```
这个代码首先生成了一个笛卡尔积,然后从中随机抽取一个大小不超过原笛卡尔积大小的子集。
这个代码使用了一个 set comprehension 来逐个从笛卡尔积中随机抽取元素。为了避免重复元素,每次抽取后都将元素从笛卡尔积中删除。这种方法可以保证抽取的元素不会重复,并且不需要使用额外的内存来存储已抽取的元素。
阅读全文