2012-03-29 14 views
3

Ich habe eine Liste Iteration in Python wie folgt definiert:Python Liste Iteration

for i in range(5): 
    for j in range(5): 
     if i != j: 
      print i , j 

für jedes Element Also in meinem definierten Bereich [0..5] ich jedes Element erhalten möchte ich, sondern auch alle anderen Elemente, die nicht i sind.

Dieser Code funktioniert genau so, wie ich es erwarte, aber gibt es einen saubereren Weg?

+0

Sie Bereich nutzen könnten() nur einmal vor den beiden Loops als erste Level-Optimierung – DhruvPathak

+0

Aus Effizienz-Sicht ist dies perfekt zu warten, es sei denn, Sie nennen es in einer engen Schleife oder deutlich erhöhen "5", ich würde mich nicht sorgen. Aus Lesbarkeitsgründen ist dies perfekt lesbar. – MattH

Antwort

10

Verwendung itertools.permutations:

import itertools as it 
for i, j in it.permutations(range(5), 2): 
    print i, j 
+1

Der OP-Code ist jedoch sehr einfach zu verstehen, ohne dass der Leser die iTertools kennen muss. Itertools glänzt, wenn Sie diese zu mehr Dimensionen skalieren müssen oder mehr als einmal benötigen. –

2

[(x, y) für x in Bereich (5) für y in Bereich (5), wenn x = y!]

+1

Bitte geben Sie weitere Informationen in Ihren Antworten an. Einige Hintergrundinformationen oder Erklärungen für die Nachwelt werden empfohlen. – Gray

Verwandte Themen