Pythons列表中的值配对

Pythons列表中的值配对,python,python-3.x,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等。如果我把它扩展到30

我有一个包含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个文件名,我将得到几千个重复的输出

有什么建议吗?

您可以使用itertools:

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

您所说的组合,其中有一种方法可以做到这一点:
在itertools中用于x,y。组合('abcd',2):
非常感谢您,这正是我需要的!欢迎@EfthimisAvgeris,如果答案对您有帮助,您可以接受答案,答案左侧上下箭头下方(:)。