In diesem Artikel möchte ich über die "Zip-Funktion" sprechen, die eine in Python integrierte Funktion ist. Ich habe die Existenz der "Zip-Funktion" schon einmal gekannt und habe sie aus irgendeinem Grund verwendet. Daher möchte ich mein Verständnis der "Zip-Funktion" in dieser Zeit vertiefen.
Was ist überhaupt eine "Zip-Funktion"? Einfach ausgedrückt handelt es sich um eine Sammlung mehrerer Listen, die als Argumente angegeben werden. Wenn Sie mehr wissen möchten, klicken Sie bitte hier. Python-Standardbibliothek
Als Grundverwendung kann die in der for-Anweisung verwendete verwendet werden.
#Erstellen Sie eine Liste mit Namen und Alter
names = ['sato', 'suzuki', 'ito']
ages = [23, 21, 25]
for name, age in zip(names, ages):
print('Name:{},Alter:{}'.format(name, age))
#Name:sato,Alter:23
#Name:suzuki,Alter:21
#Name:ito,Alter:25
Auf diese Weise können Sie die beiden Listen zusammenstellen.
Es ist auch mit drei Listen möglich.
#Erstellen Sie eine Liste mit Namen, Alter und Heimatstädten
names = ['sato', 'suzuki', 'ito']
ages = [23, 21, 25]
birthplaces = ['Tokio', 'Präfektur Aichi', 'Hokkaido']
for name, age, birthplace in zip(names, ages, birthplaces):
print('Name:{},Alter:{},Geburtsort:{}'.format(name, age, birthplace))
#Name:sato,Alter:23,Geburtsort:Tokio
#Name:suzuki,Alter:21,Geburtsort:Präfektur Aichi
#Name:ito,Alter:25,Geburtsort:Hokkaido
Sie finden es nützlich, wenn Sie eine Liste zusammenstellen möchten.
Sie können es noch kürzer machen, wenn Sie es einfach zusammensetzen.
list(zip(names, ages))
#[('sato', '23'), ('suzuki', '21'), ('ito', '25')]
Dies wird es als Taple zurückgeben.
Wie kann ich den Reißverschluss wieder zusammen bekommen? Die Antwort kann durch Hinzufügen von "*" zum Argument erfolgen.
zips = list(zip(names, ages))
names2, ages2 = zip(*zips)
print(names2)
#('sato', 'suzuki', 'ito')
print(ages2)
#(23, 21, 25)
Es wird als solcher Taple zurückgegeben. Wenn Sie als Liste ausgeben möchten, fügen Sie sie in "list ()" ein.
zips = list(zip(names, ages))
names2, ages2 = list(zip(*zips))
print(names2)
#[('sato', 'suzuki', 'ito')]
print(ages2)
#[(23, 21, 25)]
Mal sehen, was passiert, wenn die Listenlängen unterschiedlich sind.
#Erstellen Sie eine Liste mit Namen und Alter
names = ['sato', 'suzuki', 'ito', 'kato', 'saitou']
ages = [23, 21, 25]
for name, age in zip(names, ages):
print('Name:{},Alter:{}'.format(name, age))
#Name:sato,Alter:23
#Name:suzuki,Alter:21
#Name:ito,Alter:25
Wenn Sie sich das ansehen, können Sie sehen, dass es für das kürzere geeignet ist.
Früher, als die Länge der Liste unterschiedlich war, konnte ich bestätigen, dass sie zu der kürzeren passt. Wie passt der längere? Sie können dies mit dem "zip_longest-Modul" tun. Bitte sehen Sie hier für Details. zip_longest-Modul
Mal sehen.
#Erstellen Sie eine Liste mit Namen und Alter
names = ['sato', 'suzuki', 'ito', 'kato', 'saitou']
ages = [23, 21, 25]
for name, age in zip_longest(names, ages):
print('Name:{},Alter:{}'.format(name, age))
#Name:sato,Alter:23
#Name:suzuki,Alter:21
#Name:ito,Alter:25
#Name:kato,Alter:None
#Name:saitou,Alter:None
Sie können sehen, dass es mit "Keine" wie diesem gefüllt ist. "Keine" ist langweilig, also geben wir stattdessen das Durchschnittsalter ein.
#zip_Am längsten importieren
from itertools import zip_longest
#Erstellen Sie eine Liste mit Namen und Alter
names = ['sato', 'suzuki', 'ito', 'kato', 'saitou']
ages = [23, 21, 25]
#Durchschnittsalter berechnen
age_mean = sum(ages) // len(ages)
#Geben Sie den Wert an, der mit Füllwert gefüllt werden soll
for name, age in zip_longest(names, ages, fillvalue=age_mean):
print('Name:{},Alter:{}'.format(name, age))
#Name:sato,Alter:23
#Name:suzuki,Alter:21
#Name:ito,Alter:25
#Name:kato,Alter:23
#Name:saitou,Alter:23
Sie können sehen, dass es mit dem Durchschnittsalter gefüllt ist.
Lassen Sie uns abschließend prüfen, ob die Länge von drei oder mehr Listen unterschiedlich ist.
#zip_Am längsten importieren
from itertools import zip_longest
#Erstellen Sie eine Liste mit Namen, Alter und Heimatstädten
names = ['sato', 'suzuki', 'ito']
ages = [23, 21, 25]
birthplaces = ['Tokio', 'Präfektur Aichi', 'Hokkaido', 'Präfektur Yamanashi']
#Durchschnittsalter berechnen
age_mean = sum(ages) // len(ages)
#Geben Sie den Wert an, der mit Füllwert gefüllt werden soll
for name, age, birthplace in zip_longest(names, ages, birthplaces, fillvalue=age_mean):
print('Name:{},Alter:{},Geburtsort:{}'.format(name, age, birthplace))
#Name:sato,Alter:23,Geburtsort:Tokio
#Name:suzuki,Alter:21,Geburtsort:Präfektur Aichi
#Name:ito,Alter:25,Geburtsort:Hokkaido
#Name:kato,Alter:23,Geburtsort:Präfektur Yamanashi
#Name:saitou,Alter:23,Geburtsort:23
Wenn Sie das Ausgabeergebnis überprüfen, ist der Geburtsort der letzten Zeile "23". Bitte beachten Sie, dass Sie auf diese Weise nur einen Wert eingeben können.
In diesem Fall finden Sie in diesem Artikel Gegenmaßnahmen. Verwendung von Python- und Zip-Funktionen: Mehrere Listenelemente gleichzeitig abrufen
Dieses Mal habe ich die "Zip-Funktion" behandelt. Wir freuen uns darauf, Ihnen zu helfen. Wir werden weiterhin Artikel über Funktionen und Module veröffentlichen. Schauen Sie also bitte vorbei, wenn Sie möchten.
Recommended Posts