2016-05-24 12 views
0

ich etwas eingängig Verhalten auf verschachtelte Liste Comprehensionseingängig Verhalten in verschachtelte Liste Comprehensions

data = 'what is wrong with the nested iterator' 
[ (u, i) for i in xrange(0,len(u),1) for u in [ v for v in data.split(' ')]] 

was erleben Ich hatte gehofft, dass die verschachtelte Schleife über den Bereich der Zeichen für jedes Wort in der ersten Schleife durchlaufen würde . Was geschieht jedoch, dass sie zuerst die String-Array Looping, zu sein scheint und iterieren auf dem letzten Wert von u:

[('what', 0), ('is', 0), ('wrong', 0), ('with', 0), ('the', 0), ('nested', 0), ('iterator', 0), ('what', 1), ('is', 1), ('wrong', 1), ('with', 1), ('the', 1), ('nested', 1), ('iterator', 1), ('what', 2), ('is', 2), ('wrong', 2), ('with', 2), ('the', 2), ('nested', 2), ('iterator', 2), ('what', 3), ('is', 3), ('wrong', 3), ('with', 3), ('the', 3), ('nested', 3), ('iterator', 3), ('what', 4), ('is', 4), ('wrong', 4), ('with', 4), ('the', 4), ('nested', 4), ('iterator', 4), ('what', 5), ('is', 5), ('wrong', 5), ('with', 5), ('the', 5), ('nested', 5), ('iterator', 5), ('what', 6), ('is', 6), ('wrong', 6), ('with', 6), ('the', 6), ('nested', 6), ('iterator', 6), ('what', 7), ('is', 7), ('wrong', 7), ('with', 7), ('the', 7), ('nested', 7), ('iterator', 7)] 
+0

Dies könnte ein vereinfachtes, künstliches Beispiel sein, aber Sie könnten es durch eine einzelne Liste comp ersetzen - '[(u, i) für i, u in enumerate (data.split (''))] –

Antwort

1

Um diese verschachtelte Art von Listenkomprehensionen verstehen Sie sie als zwei verschachtelte for-Schleifen vorstellen kann wie folgt:

result = [] 
for i in xrange(0,len(u),1): 
    for u in [ v for v in data.split(' '): 
     result.append((u, i)) 

mit der Reihenfolge der beiden Schleifen erhalten. Daraus sollte klar hervorgehen, dass Sie ihre Positionen wechseln müssen, um das gewünschte Ergebnis zu erhalten.

Verwandte Themen