gpt4 book ai didi

Python 检查项目是否在不同的集合中,并将它们合并

转载 作者:行者123 更新时间:2023-11-30 22:18:32 25 4
gpt4 key购买 nike

假设L = [{'C', 'T'}, {'L'}, {'M'}]

c1 = 'C' 且 c2 = 'M'

如果 c1 和 c2 位于不同的集合中,我想合并。

我如何检查“C”与“M”位于不同的集合中,以便我可以有效地将其合并。我试图避免多重循环。 (如果 c1 和 c2 在同一组中,则不执行任何操作)

对于此示例,输出为:[{'C', 'T', 'M'}, {'L'}]

最佳答案

第一步是找到包含“C”和“M”的两个集合。这是使用生成器表达式来执行此操作的解决方案:

try:
i1 = next(i for i, values in enumerate(L) if 'C' in values)
i2 = next(i for i, values in enumerate(L) if 'M' in values)
except StopIteration: # "C" or "M" wasn't found
pass
else:
if i1 != i2:
set1 = L[i1]
set1.update(L.pop(i2))

在我看来,这是一个很好且可读的解决方案,但如果您确实想要避免对数据进行两次循环,则可以将两个生成器表达式合并到一个循环中:

i1 = i2 = None
for i, values in enumerate(L):
if 'C' in values:
i1 = i

if 'M' in values:
i2 = i

if i1 is not None and i2 is not None:
if i1 != i2:
set1 = L[i1]
set1.update(L.pop(i2))
break

两种解决方案都就地修改了L。他们不会创建新列表。

关于Python 检查项目是否在不同的集合中,并将它们合并,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49351717/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com