我有两个列表:
list1=['a', 'z', 'd', 'e','b']
list2=['d','e', 'b' ]
我需要这两个列表的元素的组合(而不是排列)。我已经尝试过 itertools.combinations
和 itertools.product
,但我没有得到我想要的。例如,('d','d')
是错误的。 ('a','z')
也是错误的,因为 'a'
和 'z'
属于同一个列表(list1
) 而它们都没有出现在 list2
中。最后,我不想要 ('d','e')
和 ('e','d')
- 只有其中一对,因为 order没关系。理想的输出是:
('a','d'), ('a','e'), ('a','b'),
('z','d'), ('z','e'), ('z','b'),
('d','e'), ('d','b'), ('e','b')
编辑:一般来说,list2
并不总是 list1
的子集,但我也想处理这种情况。这两个列表也可能有重叠,而不是完整的子集。
最佳答案
可能不是最有效的,但您可以尝试以下操作:
list1=['a', 'z', 'd', 'e','b']
list2=['d','e', 'b' ]
result = []
for i in list1:
for j in list2:
if i != j and (j,i) not in result:
result.append((i,j))
print(result)
结果:
[('a', 'd'), ('a', 'e'), ('a', 'b'),
('z', 'd'), ('z', 'e'), ('z', 'b'),
('d', 'e'), ('d', 'b'), ('e', 'b')]
关于python - 列表之间的组合忽略列表中的元素和列表并忽略对的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50571115/