1. Code-Anleitung
Sehen Sie sich zunächst diesen Code an:
>>> name=('jack','beginman','sony','pcky') >>> age=(2001,2003,2005,2000) >>> for a,n in zip(name,age): print a,n
Ausgabe:
jack 2001
beginman 2003
sony 2005
pcky 2000
Schauen Sie sich diesen Code noch einmal an:
all={"jack":2001,"beginman":2003,"sony":2005,"pcky":2000} for i in all.keys(): print i,all[i]
Ausgabe:
Sony 2005
PCKY 2000
Jack 2001
Beginman 2003
Entdecken Sie Gibt es einen Unterschied zwischen ihnen?
Das Offensichtlichste ist: Das erste ist einfach, flexibel und kann nacheinander eingegeben werden.
2. zip()-Funktion
Es handelt sich um eine integrierte Funktion von Python (integrierte Funktionen im Zusammenhang mit Sequenzen sind: sorted(), reversed(), enumerate(), zip()), wobei sorted() und zip() ein Sequenzobjekt (Listenobjekt) zurückgeben, reversed() und enumerate() einen Iterator zurückgeben (ähnlich einer Sequenz)
>>> type(sorted(s)) <type 'list'> >>> type(zip(s)) <type 'list'> >>> type(reversed(s)) <type 'listreverseiterator'> >>> type(enumerate(s)) <type 'enumerate'>
Was ist also die zip()-Funktion?
Lassen Sie uns helfen (zip), um zu sehen:
>>> help(zip)
Hilfe zur integrierten Funktion einpacken module __builtin__:
zip(...)
zip(seq1 [, seq2 [...]]) -> [(seq1[0 ], seq2[0] ...), (...)]
Gibt eine Liste von Tupeln zurück, wobei jedes Tupel das i-te Element enthält
von jeder der Argumentsequenzen wird
in der Länge auf die Länge der kürzesten Argumentsequenz gekürzt 🎜>
Definition: zip([seql, ...]) akzeptiert Eine Reihe iterierbarer Objekte als Parameter, packt die entsprechenden Elemente in den Objekten in Tupel (Tupel) und gibt dann diese Tupel zurück. Eine Liste bestehend aus. Wenn die Längen der übergebenen Parameter nicht gleich sind, entspricht die Länge der zurückgegebenen Liste der des Objekts mit der kürzesten Länge unter den Parametern.
>>> z1=[1,2,3] >>> z2=[4,5,6] >>> result=zip(z1,z2) >>> result [(1, 4), (2, 5), (3, 6)] >>> z3=[4,5,6,7] >>> result=zip(z1,z3) >>> result [(1, 4), (2, 5), (3, 6)] >>>
[(1, 2, 3), (4, 5, 6)]
Ein genaueres Verständnis:
* Zweidimensionale Matrixtransformation (Austausch von Zeilen und Spalten von Matrizen)
Zum Beispiel haben wir eine zweidimensionale Matrix, die durch eine Liste beschrieben wird
a = [[1, 2, 3], [4, 5, 6], [ 7, 8, 9]]
Mithilfe der Python-Listenableitung können wir diese Aufgabe einfach erledigen
print [ [row[col] for row in a] for col in range( len(a[0 ]))]
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Eine andere Möglichkeit, Menschen zu verwirren, besteht darin, Verwenden Sie die Zip-Funktion:
>>> a = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
>>> zip(*a)
[(1, 4, 7), (2, 5, 8), (3, 6, 9)]
>>> map (list,zip (*a))
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
Die Zip-Funktion akzeptiert eine beliebige Anzahl von Sequenzen als Parameter und kombiniert alle Sequenzen entsprechend demselben Index zu einer neuen Sequenz, deren Elemente in jeder Sequenz zusammengeführte Tupel sind. Die Länge der neuen Sequenz basiert auf der kürzesten Sequenz unter den Parametern. . Darüber hinaus kann der (*)-Operator in Kombination mit der Zip-Funktion die entgegengesetzte Funktion von zip erreichen, nämlich die zusammengeführte Sequenz in mehrere Tupel aufteilen. Neue Folge von ①Tupel
>>>>x=[1,2,3],y=['a','b','c']
>>>zip(x,y)
[(1,'a'),(2,'b'),(3,'c')]
②Die Länge der neuen Sequenz basiert auf der kürzesten Sequenz unter den Parametern.>>>>x=[1,2],y=['a','b ', 'c']
>>>zip(x,y)
[(1,'a'),(2,'b')]
③(*)-Operator und Zip-Funktion können die entgegengesetzte Funktion von Zip erreichen, dh die zusammengeführte Sequenz in mehrere Tupel aufteilen. >>>x=[1,2,3],y=['a','b','c']
>>>>zip(*zip( x ,y))
[(1,2,3),('a','b','c')]