我正在尝试将具有相同名称的元素重新组合,我尝试了以下代码:
l=[0,1,1,1,3,3]
lo=[[2,1,5],[2,8,9],[5,9,7],[4,6,9],[7,9,5],[2,5,6]]
ss=[]
for i in range(0,6):
for j in range(i+1,6):
if l[i]==l[j]:
b=[lo[i],lo[j]]
print(b)
ss.append(b)
print('////',ss)
break
else:
b=[lo[i]]
print('****',b)
ss.append(b)
print('/*/*/',ss)
break
print('ss:',ss)
我希望得到结果
ss: [[2,1,5],[[2,8,9],[5,9,7],[4,6,9]],[[7,9,5],[2,5,6]]]
但是它给出了:
ss: [[[2, 1, 5]], [[2, 8, 9], [5, 9, 7]], [[5, 9, 7], [4, 6, 9]], [[4, 6, 9]], [[7, 9, 5], [2, 5, 6]]]
答案 0 :(得分:2)
您可以zip
将两个列表分成一个元组序列,以便可以使用itertools.groupby
根据l
中的值对元组进行分组:
from itertools import groupby
[[s for _, s in g] for _, g in groupby(zip(l, lo), lambda t: t[0])]
这将返回:
[[[2, 1, 5]], [[2, 8, 9], [5, 9, 7], [4, 6, 9]], [[7, 9, 5], [2, 5, 6]]]