两组集合的并集

2024-09-25 18:23:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我想得到两个集合的并集。这是我目前为止用python编写的代码。我希望它是尽可能快,因为我与一个大的数据集工作。 每个冻结集不超过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])


Tags: 数据代码in元素for数字中将news
1条回答
网友
1楼 · 发布于 2024-09-25 18:23:29

您可以通过直接“或”替换frozenset实例来避免临时set实例和到frozenset的转换:

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 }

相关问题 更多 >