如何在python3的列表中相互比较值(不重复)

时间:2018-09-06 16:40:31

标签: python python-3.x

嘿,我想将列表中的每个值相互比较,并且我不希望同一值进行两次比较,例如,ab = ba,而'a'不需要与'a'本身进行比较< / p>

list = [a,b,c,d,e]

输出:

#### not necessarily in this format
ab bc cd
ac bd ce
ad be
ae

3 个答案:

答案 0 :(得分:3)

为此,您可以使用itertools.combinations

from itertools import combinations

for i in combinations([1,2,3,4], 2):
  print(i)

此打印:

(1, 2)
(1, 3)
(1, 4)
(2, 3)
(2, 4)
(3, 4)

答案 1 :(得分:0)

您可以在另一个内部创建2个循环,其中内部循环始终从外部循环当前具有的下一个索引开始

l = [1, 2, 3, 4]

outer_index = 0
while(outer_index < len(l)):
    inner_index = outer_index+1
    while(inner_index < len(l)):
        print(str(l[outer_index]) + ", " +  str(l[inner_index]))
        inner_index = inner_index+1
    outer_index = outer_index+1

答案 2 :(得分:0)

不确定我是否理解您的问题。 这是我的方法,不使用库,仅使用简单的代码:

a=1
b=2
c=3
d=4
e=5

list = [a,b,c,d,e]
for index, i in enumerate(list):
    list2=list[index+1:]
    for j in list2:
        print i, j

输出:

1 2
1 3
1 4
1 5
2 3
2 4
2 5
3 4
3 5
4 5

您可以使用函数而不是'print'来比较变量

可以肯定的是,可以对代码进行优化(更多pythonic),但这是一种方法