Lists
Până acum, fiecare variabilă conținea un singur lucru: un nume, un număr, un boolean. Dar dacă vreau să stochez numele tuturor personajelor din GTA Vice City?
Aș putea face asta
nume1 = "Tommy Vercetti"
nume2 = "Lance Vance"
nume3 = "Cortez"
nume4 = "Phil Cassidy"
nume5 = "Sonny Forelli"
Urât. Și dacă aș vrea 100 de nume? 1000? Nici vorbă. Trebuie să existe o soluție mai bună
Există. Se numește listă
nume = ["Tommy Vercetti", "Lance Vance", "Cortez", "Phil Cassidy", "Sonny Forelli"]
print(nume)
O listă este o colecție de valori stocate într-o singură variabilă. Folosim parantezele drepte [ ] și separăm elementele cu virgula
Dacă rulăm asta, Python va afișa toată lista deodată
['Tommy Vercetti', 'Lance Vance', 'Cortez', 'Phil Cassidy', 'Sonny Forelli']
Putem accesa și un singur element al listei, exact cum am făcut cu șirurile de caractere: prin index
nume = ["Tommy Vercetti", "Lance Vance", "Cortez"]
print(nume[0]) # Tommy Vercetti
print(nume[1]) # Lance Vance
print(nume[2]) # Cortez
Încă o dată, numărarea începe de la 0. Primul element este nume[0], NU nume[1]
Ce se întâmplă dacă cerem un index care nu există?
nume = ["Tommy Vercetti", "Lance Vance", "Cortez"]
print(nume[10])
Rulează-l. Vei vedea că Python se plânge cu un IndexError, pentru că nu există niciun element la poziția 10. Citește mereu erorile, ele pot fi foarte utile
Câte elemente are o listă? len() din nou
nume = ["Tommy Vercetti", "Lance Vance", "Cortez"]
print(len(nume)) # 3
Același len() pe care l-am folosit pe șiruri. Python este isteț în privința asta
Putem adăuga elemente noi într-o listă cu .append()
nume = ["Tommy Vercetti", "Lance Vance"]
nume.append("Cortez")
nume.append("Phil Cassidy")
print(nume)
Ieșire
['Tommy Vercetti', 'Lance Vance', 'Cortez', 'Phil Cassidy']
.append() adaugă noul element la sfârșitul listei. Lista s-a modificat, asta este diferit de upper() și lower() pe șiruri, care returnau un șir nou. Listele sunt modificate pe loc
Putem și schimba o valoare la un anumit index
nume = ["Tommy Vercetti", "Lance Vance", "Cortez"]
nume[1] = "Lance Vance Dance"
print(nume)
Ieșire
['Tommy Vercetti', 'Lance Vance Dance', 'Cortez']
Listele pot conține orice fel de valori, nu doar șiruri
varste = [42, 35, 60, 29]
preturi = [3.14, 9.99, 12.50]
fanioane = [True, False, True]
Le putem chiar amesteca, dar în practică este rar și de obicei un semn că ceva e greșit la design
Misiune: Cala de Marfă
Stația își ține evidența mărfii într-o listă. Creează o listă goală numită incarcatura. Apoi citește din input 4 articole, câte unul pe linie, și fă următoarele, în ordine:
- Adaugă fiecare dintre cele 4 articole citite în listă
- Afișează lista
- Afișează primul articol
- Afișează ultimul articol
- Afișează câte articole sunt încărcate
- O scurgere golește articolul de la indexul 1, înlocuiește-l cu
gol - Afișează lista
Exemplu
Dacă utilizatorul tastează
oxigen
apa
mancare
combustibil
programul afișează
['oxigen', 'apa', 'mancare', 'combustibil']
oxigen
combustibil
4
['oxigen', 'gol', 'mancare', 'combustibil']
Observă ultima linie: când afișezi o listă întreagă, Python îți pune parantezele și ghilimelele de la sine.