Operacije nad listom namerno menjaju stanje liste.
Već znate da lista čuva uređene elemente i da svaki element ima indeks. Sada ćete birati operacije koje namerno menjaju njen sadržaj: lista pre operacije → operacija → lista posle operacije. Lista je <strong>promenljiva</strong>, pa operacija može izmeniti postojeću listu umesto da počnete iznova.
tasks = ["Learn Python", "Practice loops"]
tasks.append("Build a project")
print(tasks)Ovo čitajte kao promenu stanja: ["Learn Python", "Practice loops"] → append("Build a project") → ["Learn Python", "Practice loops", "Build a project"]. append(value) dodaje jedan element na kraj; raniji elementi zadržavaju redosled, a ista lista se menja.
['Learn Python', 'Practice loops', 'Build a project']Pre izbora metode postavite jedno korisno pitanje: „Da li znam vrednost ili znam poziciju?“ remove(value) traži podudarnu vrednost. pop(index) uklanja element sa pozicije i vraća tu uklonjenu vrednost.
Korisna odluka: remove(value) pita „Koju vrednost?“ pop(index) pita „Sa koje pozicije?“ Broj u remove(1) je vrednost koju treba pronaći; broj u pop(1) je indeks 1.
items = ["book", "pen", "bag"]
items.remove("pen")
removed = items.pop(1)
print(items)
print(removed)remove("pen") uklanja po vrednosti. Lista postaje ["book", "bag"], pa se indeks 1 sada odnosi na "bag". Zatim pop(1) uklanja "bag" i čuva vraćenu vrednost u promenljivoj removed. Indeksi pripadaju trenutnom stanju liste i mogu se promeniti posle insert(), remove() ili pop().
items = ["book", "bag"]
items.insert(1, "pen")
print(items)insert(index, value) stavlja novi element na tu poziciju i pomera kasnije elemente udesno: ["book", "bag"] → ["book", "pen", "bag"]. To se razlikuje od items[index] = value, koje menja postojeći element umesto da doda novi.
items = [1, "one", 2]
items.remove(1)
removed = items.pop(1)
print(items)
print(removed)remove(1) pronalazi vrednost 1; to ne znači „ukloni indeks 1“. Posle tog uklanjanja, pop(1) uklanja trenutni element na indeksu 1 i vraća ga. Koristite pop() bez argumenta kada želite da uklonite i sačuvate poslednji element.
tasks = ["Learn Python", "Practice loops"]
print(len(tasks))
print("Learn Python" in tasks)
if "Practice loops" in tasks:
tasks.remove("Practice loops")len(tasks) pita „Koliko elemenata ima lista?“ Poslednji važeći indeks bio bi len(tasks) - 1. Izraz value in list daje Boolean rezultat i povezuje liste sa bool i if. Provera unapred je korisna zato što remove() može izazvati ValueError kada vrednost ne postoji.
tasks = ["learn", "practice"]
tasks.append("build")
tasks.insert(1, "review")
tasks.remove("practice")
last_task = tasks.pop()
print(tasks)
print(last_task)
print(len(tasks))Zastanite pre pokretanja. Predvidite konačnu listu, vrednost u last_task i len(tasks). Lista se menja jednom operacijom: ["learn", "practice"] → ["learn", "practice", "build"] → ["learn", "review", "practice", "build"] → ["learn", "review", "build"] → ["learn", "review"]. last_task je "build", a konačna dužina je 2.
Izaberite operaciju prema svojoj nameri
- Dodajte na krajKoristite
append(value)kada novi element pripada iza trenutnog poslednjeg elementa. - Dodajte na određenu pozicijuKoristite
insert(index, value)kada novi element pripada ispred elementa koji je trenutno na tom indeksu. - Uklanjajte namernoKoristite
remove(value)kada znate vrednost; koristitepop(index)kada znate poziciju; koristitepop()za poslednji element. - Proverite trenutno stanjeKoristite
len(list)za brojanje elemenata ivalue in listda proverite da li vrednost postoji pre nego što je uklonite.
Česte početničke greške
- Mešanje vrednosti i pozicije
remove(1)traži vrednost1;pop(1)uklanja element na indeksu1. - Uklanjanje vrednosti koja ne postoji
items.remove("missing")može izazvatiValueError. Koristiteif "missing" in items:kada vrednost možda ne postoji. - Zaboravljanje da se indeksi menjajuPosle
insert(),remove()ilipop(), stari indeks možda više ne pokazuje na isti element. - Zaboravljanje da pop vraća vrednost
removed = items.pop()ne skraćuje samo listu: daje vam uklonjenu poslednju vrednost da je možete koristiti kasnije.
