在Pythons列表中配对值

时间:2016-11-27 17:00:12

标签: python python-3.x

我有一个包含300个txt文件的文件夹。假设.txt名称是a,b,c,d等。 我需要用python脚本比较每一对。我需要比较a-b,a-c,a-d,b-c,b-d。我不想要a-a而且我也不想同时拥有a-b和b-a。 我的猜测就像是

for x in ['a', 'b', 'c', 'd']:
     for y in ['a', 'b', 'c', 'd']:
          if x != y:
            print(x , y)

但是我得到了a-b和b-a等。如果我将它缩放到300个文件名,我将获得几千个重复输出。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您可以使用itertools中的combinations

from itertools import combinations

files = ['a', 'b', 'c', 'd']
filesCombine = combinations(files, 2) # [('a', 'b'), ('a', 'c'), ('a', 'd'), ('b', 'c'), ('b', 'd'), ('c', 'd')]
for f1, f2 in filesCombine:
    # compare f1 with f2

第二个参数是每个组合的长度,在本例中为2