Bordmittel: enumerate()
In dieser Übung probierst du die Verwendung der in Python integrierten Funktion enumerate() aus. Diese Funktion ist praktisch, um eine indizierte Liste zu erhalten. Nehmen wir mal an, du hast eine Liste von Menschen, die zu deiner Party gekommen sind. Die Liste ist nach Ankunft sortiert (Jerry kam als Erster, dann Kramer usw.):
names = ['Jerry', 'Kramer', 'Elaine', 'George', 'Newman']
Wenn du einen Index hinzufügen willst, der die Reihenfolge der Ankunft einer Person angibt, kannst 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. Schauen wir nun, wie man enumerate() nutzen kann, um das Ganze 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, verändere die for-Schleife so, dass sieials Indexvariable undnameals Iteratorvariable benutzt, und verwendeenumerate(). - Schreibe die vorherige for-Schleife mit
enumerate()und Listenabstraktion um, um eine neue Liste zu erstellen:indexed_names_comp. - Erstelle eine weitere Liste (
indexed_names_unpack), indem du das Sternchenzeichen (*) verwendest, um das enumerate-Objekt zu entpacken, das mitenumerate()aufnameserstellt wurde. Starte dieses Mal fürenumerate()den Index bei eins statt bei null.
Interaktive Übung
Vervollständige den Beispielcode, um diese Übung erfolgreich abzuschließen.
# 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)