2016-11-27 2 views
-2

Ich habe einen Ordner mit 300 TXT-Dateien. Nehmen wir an, die .txt-Namen sind a, b, c, d usw. Ich muss jedes Paar mit einem Python-Skript vergleichen. Ich muss a-b, a-c, a-d, b-c, b-d vergleichen. Ich möchte nicht a-a haben und ich möchte auch nicht a-b und b-a haben. Meine Vermutung war so etwas wiePaarung von Werten in einer Pythons-Liste

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

aber ich bin immer sowohl a-b und b-a usw. Wenn ich es bei den 300 Dateinamen skalieren werde ich ein paar tausend Ausgänge duplizieren bekommen.

Irgendwelche Vorschläge?

+0

Sie sprechen von 'combinations', und es gibt eine Methode zu tun dies in ['itertools'] (https://docs.python.org/3.5/library/itertools.html?highlight=combinations#itertoolscombinations):' für x, y in iertoolscombinations ('abcd', 2): ' – AChampion

Antwort

1

Sie können combinations von itertools verwenden:

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 

Das zweite Argument ist die Länge jeder Kombination, in diesem Fall 2

+0

vielen dank, das ist genau das, was ich brauche! –

+0

Sie sind willkommen @EfthimisAvgeris, können Sie die Antwort akzeptieren, wenn es Ihnen geholfen hat, unter den Pfeilen nach oben/unten auf der linken Seite der Antwort (:. –

Verwandte Themen