我有2个相同的列表如下所示:
list_1 = ['A','B','C','D','E','F']
list_2 = ['A','B','C','D','E','F']
我将其中的每个元素连接起来,
for i in list_1:
for j in list_2:
print(i+' and '+j)
你能帮我删除可能发生的重复组合吗?(例如:AA,.. FF以及AB,AC,BC等)
提前致谢!
答案 0 :(得分:2)
您只需执行比较并将其约束为i
小于j
:
for i in list_1:
for j in list_2:
if i < j:
print(i+' and '+j)
由于订单限制,如果打印'A and B'
,这意味着A
小于B
,这意味着约束'A' > 'B'
将失败,因此{{ 1}}将不会被打印。
答案 1 :(得分:2)
使用itertools.combinations。在这种情况下,代码变得更加简单。您只需要一个列表,combinations
会自动生成唯一的组合。所以你没有过滤&#39; AA&#39;或者&#39; CB&#39;仅通过BC&#39;。
>>> from itertools import combinations
>>> l=['A','B','C','D','E','F']
list(combinations(l, 2))
[('A', 'B'), ('A', 'C'), ('A', 'D'), ('A', 'E'), ('A', 'F'),
('B', 'C'), ('B', 'D'), ('B', 'E'), ('B', 'F'),
('C', 'D'), ('C', 'E'), ('C', 'F'),
('D', 'E'), ('D', 'F'),
('E', 'F')]
>>> # or with joined strings
>>> [' and '.join(x) for x in combinations(l, 2)]
['A and B', 'A and C', 'A and D', 'A and E', 'A and F',
'B and C', 'B and D', 'B and E', 'B and F',
'C and D', 'C and E', 'C and F',
'D and E', 'D and F',
'E and F']
我已经格式化输出,看你有干净的结果。