2016-11-27 2 views
-2

У меня есть папка с 300 текстовыми файлами. скажем, имена .txt - это a, b, c, d и т. д. Мне нужно сравнить каждую пару с скриптом python. Мне нужно сравнить a-b, a-c, a-d, b-c, b-d. Я не хочу иметь a-a, а также я не хочу иметь a-b и b-a. Моего предположение было что-то вродеСопряжение значений в списке Pythons

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

, но я получаю как а-б и б-а и т.д. Если я масштабировать его на именах 300 файлов я получу несколько тысяч дублируют выходы.

Любые предложения?

+0

Вы говорите о 'combinations', и есть способ сделать это в ['itertools'] (https://docs.python.org/3.5/library/itertools.html?highlight=combinations#itertools.combinations):' для x, y в itertools.combinations ('abcd', 2): ' – AChampion

ответ

1

Вы можете использовать combinations из 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

+0

Большое вам спасибо, это именно то, что мне нужно! –

+0

Добро пожаловать @EfthimisAvgeris, вы можете принять ответ, если он поможет вам, под стрелками вверх/вниз в левой части ответа (:. –

Смежные вопросы