Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/351.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 两个集合的并集_Python - Fatal编程技术网

Python 两个集合的并集

Python 两个集合的并集,python,Python,我想得到两组集合的并集。以下是我迄今为止用python编写的代码。我希望它尽可能快,因为我正在处理一个大数据集。 每个Frozenset不超过20个元素,但在一个集合中总共大约有50000个元素。所有数字都将介于0和100之间。我希望两个集合中都有相当数量的冻结集,或者合并后其中一个集合中已经存在冻结集。 如果能让我的程序运行得更快,我愿意转换成其他类型,但我不想重复任何元素,顺序也不重要 sets1 = set([frozenset([1,2,3]),frozenset([4,5,6])])

我想得到两组集合的并集。以下是我迄今为止用python编写的代码。我希望它尽可能快,因为我正在处理一个大数据集。 每个Frozenset不超过20个元素,但在一个集合中总共大约有50000个元素。所有数字都将介于0和100之间。我希望两个集合中都有相当数量的冻结集,或者合并后其中一个集合中已经存在冻结集。 如果能让我的程序运行得更快,我愿意转换成其他类型,但我不想重复任何元素,顺序也不重要

sets1 = set([frozenset([1,2,3]),frozenset([4,5,6])])
sets2 = set([frozenset([8,9,10]),frozenset([6,7,3])])
newSets = set()
for fset in sets1:
    for fset2 in sets2:
        newS = set(fset)
        newS.update(fset2)
        newSets.add(frozenset(newS))

设置正确的输出([1,2,3,8,9,10],[1,2,3,6,7],[3,4,5,6,7],[4,5,6,8,9,10])

您可以通过直接“或”调用
冻结集来避免临时
集合
实例和转换为
冻结集

newSets = set()
for fset in sets1:
    for fset2 in sets2:
        newSets.add(fset | fset2)
通过使用集合理解,可以实现进一步(轻微)加速:

newSets = { fset|fset2  for fset in sets1  for fset2 in sets2 }

所有元素都是整数吗?它们是否都在预定范围内?尽可能快?快一点怎么样?你必须有一个标准,但你会知道什么时候你完成了。谢谢你的帮助。使用encode_set需要导入什么?@solo989这只是一个虚构的函数。简单地使用循环实现。我不知道numpy中是否有一个有效的实现。我不知道你打算如何
取消编码
两个编码集的按位并集(假设一个字节少于100位)。@PeterWood e.g.
[set(s.nonzero()[0])表示新闻集中的s