繁体   English   中英

连接相同列表的元素而不重复python

[英]Concatenate elements of identical lists without duplicates python

我有两个相同的列表,如下所示:

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等)

提前致谢!

您只需执行比较并将其约束为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'将失败,因此将不会打印B and A

使用itertools.combinations 在这种情况下,代码变得更加简单。 您只需要一个列表, combinations自动生成唯一的组合。 因此,您不必通过“ BC”即可过滤“ AA”或“ CB”。

>>> 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']

我格式化了输出,看看结果是否干净。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM