Leistungsstarker Reißverschluss

高洛峰
Freigeben: 2016-10-20 10:00:17
Original
1154 Leute haben es durchsucht

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
Nach dem Login kopieren

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]
Nach dem Login kopieren

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 &#39;list&#39;>
 >>> type(zip(s))
 <type &#39;list&#39;>
 >>> type(reversed(s))
 <type &#39;listreverseiterator&#39;>
 >>> type(enumerate(s))
 <type &#39;enumerate&#39;>
Nach dem Login kopieren

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)]
 >>>
Nach dem Login kopieren
zip() mit dem *-Operator kann das komprimierte Listenobjekt

>>> zip( *result)

[(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')]

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage