Practică cu funcții built-in: enumerate()
În acest exercițiu, vei exersa utilizarea funcției built-in enumerate() din Python. Această funcție este utilă pentru a obține o listă indexată. Să presupunem, de exemplu, că ai o listă cu persoanele sosite la o petrecere pe care o organizezi. Lista este ordonată după ordinea sosirii (Jerry a sosit primul, urmat de Kramer etc.):
names = ['Jerry', 'Kramer', 'Elaine', 'George', 'Newman']
Dacă ai vrea să atașezi un index care să reprezinte ordinea de sosire a fiecărei persoane, ai putea folosi următoarea buclă for:
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')]
Însă aceasta nu este cea mai eficientă soluție. Hai să vedem cum putem folosi enumerate() pentru a face lucrurile mai eficient.
Acest exercițiu face parte din cursul
Scriere eficientă a codului Python
Instrucțiuni pentru exercițiu
- În loc să folosești
for i in range(len(names)), actualizează bucla for astfel încât să foloseștiica variabilă de index șinameca variabilă iteratoare, utilizândenumerate(). - Rescrie bucla for anterioară folosind
enumerate()și list comprehension pentru a crea o nouă listă,indexed_names_comp. - Creează o altă listă (
indexed_names_unpack) folosind caracterul asterisc (*) pentru a despacheta obiectul enumerate creat prin aplicareaenumerate()penames. De această dată, pornește indexul pentruenumerate()de la unu în loc de zero.
Exercițiu interactiv practic
Încearcă acest exercițiu completând acest cod de exemplu.
# 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)