LoslegenKostenlos loslegen

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

Kurs anzeigen

Anleitung zur Übung

  • Anstatt for i in range(len(names)) zu verwenden, verändere die for-Schleife so, dass sie i als Indexvariable und name als Iteratorvariable benutzt, und verwende enumerate().
  • 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 mit enumerate() auf names erstellt wurde. Starte dieses Mal für enumerate() 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)
Code bearbeiten und ausführen