2014-11-26 3 views
8

Das Ergebnis von Python's iertools.combinations() ist die Kombination von Zahlen. Zum Beispiel:Python itertools.combinations: wie man die Indizes der kombinierten Zahlen erhält

a = [7, 5, 5, 4] 
b = list(itertools.combinations(a, 2)) 

# b = [(7, 5), (7, 5), (7, 4), (5, 5), (5, 4), (5, 4)] 

Aber ich mag auch die Indizes der Kombinationen erhalten wie:

index = [(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)] 

Wie kann ich es tun?

+6

'itertools.combinations (Bereich (len (a)), 2)'? – jonrsharpe

Antwort

8

können Sie enumerate verwenden:

>>> a = [7, 5, 5, 4] 
>>> list(itertools.combinations(enumerate(a), 2)) 
[((0, 7), (1, 5)), ((0, 7), (2, 5)), ((0, 7), (3, 4)), ((1, 5), (2, 5)), ((1, 5), (3, 4)), ((2, 5), (3, 4))] 
>>> b = list((i,j) for ((i,_),(j,_)) in itertools.combinations(enumerate(a), 2)) 
>>> b 
[(0, 1), (0, 2), (0, 3), (1, 2), (1, 3), (2, 3)] 
+0

Großartig, vielen Dank. –

Verwandte Themen