Python 如何找到3个大集合交集的100个元素的列表?

Python 如何找到3个大集合交集的100个元素的列表?,python,algorithm,set,Python,Algorithm,Set,有没有办法避免计算所有3组的交集,然后切片前100个数字 到目前为止,我的代码是: def intersection_alg(): 从变量获取集合 cfs_set=set() 对于get_set_from_变量中的逻辑_名称: tmp_set=set(从_db(逻辑名称)获取_列表) cfs_集=cfs_集交叉点(tmp_集)(如果cfs_集为其他cfs_集) 返回列表(cfs_set)[:100] 您可以使用生成器和itertools.islice,请参见下面的示例。根据您对集合内容的了解,您

有没有办法避免计算所有3组的交集,然后切片前100个数字

到目前为止,我的代码是:

def intersection_alg():
从变量获取集合
cfs_set=set()
对于get_set_from_变量中的逻辑_名称:
tmp_set=set(从_db(逻辑名称)获取_列表)
cfs_集=cfs_集交叉点(tmp_集)(如果cfs_集为其他cfs_集)
返回列表(cfs_set)[:100]

您可以使用生成器和
itertools.islice
,请参见下面的示例。根据您对集合内容的了解,您可以通过更改
for
循环中的迭代顺序来提高性能

运行之间的确切结果可能不同,因为集合以任意顺序迭代

游乐场:

导入itertools
def lazy_交点(*集):
对于以最小值表示的x(组,键=λs:len):
如果全部(x在s中表示s在集合中):
产量x
a={2*k表示范围(1000)内的k}
b={3*k表示范围(1000)内的k}
c={5*k表示范围(1000)内的k}
生成器=惰性交叉点(a、b、c)
first_10=列表(itertools.islice(生成器,10))
打印(第10页)
输出(注意不能保证升序):


资源:


从所有3个集合的交叉点开始的前100个NUMEBR输入错误它是交叉点您的代码没有正确缩进。
[0, 30, 60, 90, 120, 150, 180, 210, 240, 270]