Eingebaute Praxis: enumerate()
In dieser Übung übst du den Umgang mit der in Python eingebauten Funktion enumerate()
. Diese Funktion ist nützlich, um eine indizierte Liste zu erhalten. Angenommen, du hast eine Liste mit Leuten, die zu einer Party kommen, die du veranstaltest. Die Liste ist nach Ankunft geordnet (Jerry kam als Erster an, gefolgt von Kramer, usw.):
names = ['Jerry', 'Kramer', 'Elaine', 'George', 'Newman']
Wenn du einen Index anhängen möchtest, der die Ankunftsreihenfolge einer Person darstellt, könntest du die folgende for-Schleife verwenden:
indexed_names = []
for i in range(len(names)):
index_name = (i, names[i])
indexed_names.append(index_name)
[(0,'Jerry'),(1,'Kramer'),(2,'Elaine'),(3,'George'),(4,'Newman')]
Aber das ist nicht die effizienteste Lösung. Wir wollen herausfinden, wie wir enumerate()
nutzen können, um dies effizienter zu machen.
Diese Übung ist Teil des Kurses
Effizienten Python-Code schreiben
Anleitung zur Übung
- Anstatt
for i in range(len(names))
zu verwenden, aktualisiere die for-Schleife, umi
als Indexvariable undname
als Iteratorvariable zu verwenden, und benutzeenumerate()
. - Schreibe die vorherige for-Schleife mit
enumerate()
und Listenverständnis um, um eine neue Liste zu erstellen,indexed_names_comp
. - Erstelle eine weitere Liste (
indexed_names_unpack
), indem du das Sternzeichen (*
) verwendest, um das Aufzählungsobjekt, das du mitenumerate()
erstellt hast, aufnames
auszupacken. Beginne den Index fürenumerate()
dieses Mal bei eins statt bei null.
Interaktive Übung zum Anfassen
Probieren Sie diese Übung aus, indem Sie diesen Beispielcode ausführen.
# Rewrite the for loop to use enumerate
indexed_names = []
for ____,_____ in ____(names):
index_name = (i,name)
indexed_names.append(index_name)
print(indexed_names)
# Rewrite the above for loop using list comprehension
indexed_names_comp = [(____,____) for i,name in ____(names)]
print(indexed_names_comp)
# Unpack an enumerate object with a starting index of one
indexed_names_unpack = [____(names, ____)]
print(indexed_names_unpack)