我在Python中有以下列表:
[[1, 2], [3, 4], [4, 6], [2, 7], [3, 9]]
Run Code Online (Sandbox Code Playgroud)
我想将它们分组 [[1,2,7],[3,4,6,9]]
我这样做的代码如下所示:
l=[[1, 2], [3, 4], [4, 6], [2, 7], [3, 9]]
lf=[]
for li in l:
for lfi in lf:
if lfi.intersection(set(li)):
lfi=lfi.union(set(li))
break
else:
lf.append(set(li))
Run Code Online (Sandbox Code Playgroud)
如果是我的最终名单.我在l和lf上做了一个循环,当我找到l和lf中的另一个元素之间的交集时,我想合并它们(union)
但我无法弄清楚为什么这不起作用.列表l的第一个元素正在使用append命令插入,但联合不起作用.我的最终名单看起来像[set([1, 2]), set([3, 4])]
它似乎是非常基本的东西,但我不熟悉套装.我感谢任何帮助
谢谢
问题出在这里:
lfi=lfi.union(set(li))
Run Code Online (Sandbox Code Playgroud)
您没有修改该集.您正在创建一个新集合,然后将其丢弃.原始集仍然在lf数组中.改为使用更新:
lfi.update(li)
Run Code Online (Sandbox Code Playgroud)
这会修改原始集而不是创建新集.进行此更改后的结果:
[set([1, 2, 7]), set([9, 3, 4, 6])]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3240 次 |
| 最近记录: |