2016-12-13 2 views
1

Ich kämpfe um die zip Funktion von Python 2.7 zu arbeiten, um die Ausgabe, die ich brauche, zu liefern.Python ZIP-Funktion gibt unerwartete Ausgabe

Beispiel der Daten, die ich habe:

print(score_data[0:3]) 
[['0/1:7,3:10:99', '0/0:3:3:99'], ['0/0:12:12:99', '0/1:11,7:18:99'], ['0/1:8,7:15:99', '0/1:14,4:18:99']] 

Die Art der Ausgabe, die ich

[['0/1:7,3:10:99','0/1:8,7:15:99', '0/0:12:12:99'], [ '0/1:11,7:18:99','0/0:3:3:99', '0/1:14,4:18:99']] 

Der Ausgang wollen, die ich erhalte:

print(zip(score_data[0:3])) 
[(['0/1:7,3:10:99', '0/0:3:3:99'],), (['0/0:12:12:99', '0/1:11,7:18:99'],), (['0/1:8,7:15:99', '0/1:14,4:18:99'],)] 
+0

'print (* score_data [0: 3])' wlll geben Sie die erwartete Ausgabe aber in einer anderen Reihenfolge. – JRodDynamite

Antwort

6

Du bist falsch anwenden zip auf einer Liste. zip nicht beschweren, aber es kommt noch hinzu, eine Tupel Dimension zu Ihrer Liste, nicht von großem Nutzen:

>>> list (zip([1,2,3,4])) 
[(1,), (2,), (3,), (4,)] 

Sie müssen die Unterlisten als Positionsargument (mit * Operator) erweitern, um zip weitergeben müssen:

z = [['0/1:7,3:10:99', '0/0:3:3:99'], ['0/0:12:12:99', '0/1:11,7:18:99'], ['0/1:8,7:15:99', '0/1:14,4:18:99']] 

print(list(zip(*z))) # convert to list for python 3 compat. 

Ergebnis:

[('0/1:7,3:10:99', '0/0:12:12:99', '0/1:8,7:15:99'), ('0/0:3:3:99', '0/1:11,7:18:99', '0/1:14,4:18:99')] 

zur Kenntnis, dass zip Fragen Tupeln standardmäßig. So erstellen list Typen statt:

print([list(x) for x in zip(*z)]) 

Ergebnis:

[['0/1:7,3:10:99', '0/0:12:12:99', '0/1:8,7:15:99'], ['0/0:3:3:99', '0/1:11,7:18:99', '0/1:14,4:18:99']] 
+0

Danke! :-) Ich kann akzeptieren, dass du in 11 Minuten antwortest. –