U ovom uputstvu istražićemo različite načine korišćenja Python metoda za manipulaciju listama. Naučićete kako dodavati, menjati i brisati elemente iz Python lista.
Kada počinjete da programirate u Python-u, liste su među prvim ugrađenim strukturama podataka koje ćete savladati. U narednim redovima, proći ćemo kroz osnove Python lista, a zatim ćemo se fokusirati na korisne metode koje možete upotrebiti prilikom rada sa listama.
Počnimo!
Pregled Python lista
U Python-u, lista predstavlja kolekciju stavki koje mogu biti istog ili različitog tipa podataka. Možete prolaziti kroz ovu kolekciju i pristupati elementima koristeći petlje, kao što su `for` petlje.
Kao i svi Python iterabili, liste se indeksiraju počevši od nule i podržavaju operaciju sečenja (slice).
Liste su promenljive kolekcije, što znači da se mogu modifikovati na licu mesta. Ovo uključuje dodavanje i uklanjanje elemenata, sortiranje elemenata određenim redosledom, obrtanje redosleda elemenata i još mnogo toga. Python-ove ugrađene metode lista vam pomažu u ovim radnjama.
Pogledajmo neke korisne Python metode za rad sa listama.
Metode ugrađene u Python listama
U ovom delu, naučićemo o nekoliko korisnih metoda za rad sa listama. Pružićemo primere koda kako bismo videli ove metode na delu.
Koristićemo listu `pgm_langs`, koja sadrži stringove sa imenima popularnih programskih jezika.
pgm_langs = ['Python','Go','Rust','JavaScript']
Umetanje elemenata u listu pomoću `insert()`
Ponekad je potrebno umetnuti element na određenu poziciju u listi. Za ovo se koristi metoda `insert()`. Poziv ove metode uključuje:
- Indeks na koji se element treba umetnuti, i
- Element koji se umeće.
Umetnimo string ‘Scala’ na indeks 1 pomoću metode `insert()`.
pgm_langs = ['Python','Go','Rust','JavaScript'] pgm_langs.insert(1,'Scala') print(pgm_langs) # Output: ['Python', 'Scala', 'Go', 'Rust', 'JavaScript']
Dodavanje elementa na kraj liste pomoću `append()`
Često je potrebno dodati element na kraj liste. To se postiže metodom `append()`.
Dodajmo string ‘Java’ na kraj liste koristeći metodu `append()`.
pgm_langs.append('Java') print(pgm_langs) # Output: ['Python', 'Scala', 'Go', 'Rust', 'JavaScript', 'Java']
Dodavanje iterabilnih objekata pomoću `extend()`
Već znate da možete koristiti `append()` za dodavanje jednog elementa. Ali šta ako želite da dodate više elemenata, recimo, listu elemenata, na postojeću listu? Metoda `extend()` nudi jednostavan način za to.
Dodajmo elemente iz liste `more_langs` u listu `pgm_langs` koristeći metodu `extend()`.
more_langs = ['C++','C#','C'] pgm_langs.extend(more_langs) print(pgm_langs) # Output: ['Python', 'Scala', 'Go', 'Rust', 'JavaScript', 'Java', 'C++', 'C#', 'C']
Možete proći kroz listu elemenata i koristiti metodu `append()` da dodate element po element. Međutim, ovo može biti nepotrebno dugačko. Zgodnije je koristiti metodu `extend()`.
for lang in more_langs: pgm_langs.append(lang)
Obrtanje redosleda elemenata u listi pomoću `reverse()`
Da biste obrnuli redosled elemenata u listi, možete pozvati metodu `reverse()`.
Pogledajmo kako se lista `pgm_langs` menja.
pgm_langs.reverse() print(pgm_langs) # Output: ['C', 'C#', 'C++', 'Java', 'JavaScript', 'Rust', 'Go', 'Scala', 'Python']
Sortiranje liste pomoću `sort()`
Možete sortirati Python listu na licu mesta koristeći metodu `sort()`. Pošto je `pgm_langs` lista stringova, sortiranje se vrši po abecednom redu.
pgm_langs.sort() print(pgm_langs) # Output: ['C', 'C#', 'C++', 'Go', 'Java', 'JavaScript', 'Python', 'Rust', 'Scala']
Da biste sortirali listu u obrnutom abecednom redu, možete podesiti parametar `reverse` na `True` u pozivu metode `sort()`.
pgm_langs.sort(reverse=True) print(pgm_langs) # Output: ['Scala', 'Rust', 'Python', 'JavaScript', 'Java', 'Go', 'C++', 'C#', 'C']
Saznajte više o sortiranju Python lista.
Kreiranje plitke kopije pomoću `copy()`
Ponekad je korisno modifikovati kopiju originalne liste umesto da menjate samu originalnu listu. Metoda `copy()` vraća plitku kopiju Python liste.
Napravimo plitku kopiju liste `pgm_langs` i nazovimo je `pgm_langs_copy`. Postavimo prvi element u listi na ‘Haskell’ i odštampajmo listu.
pgm_langs_copy = pgm_langs.copy() pgm_langs_copy[0]='Haskell'
print(pgm_langs_copy) # Output: ['Haskell', 'Rust', 'Python', 'JavaScript', 'Java', 'Go', 'C++', 'C#', 'C']
Vidimo da lista `pgm_langs` nije modifikovana. Dakle, pravljenje plitke kopije i njena modifikacija ne menja originalnu listu.
print(pgm_langs) # Output: ['Scala', 'Rust', 'Python', 'JavaScript', 'Java', 'Go', 'C++', 'C#', 'C']
Dobijanje broja pojavljivanja elementa pomoću `count()`
Ponekad je korisno znati koliko puta se određeni element pojavljuje u listi. Metoda `count()` vraća broj pojavljivanja elementa u listi.
U listi `pgm_langs`, svi elementi se pojavljuju tačno jednom. Dakle, kada pokušamo da dobijemo broj pojavljivanja stringa ‘Go’, dobijamo 1, što je tačno.
print(pgm_langs.count('Go')) # Output: 1
Korišćenje metode `count()` je jedan od načina za uklanjanje duplikata iz Python lista.
Dobijanje indeksa elementa pomoću `index()`
Da biste pronašli indeks elementa u Python listi, možete koristiti metodu `index()`. Pretpostavimo da želimo da pronađemo indeks stringa ‘C#’ u listi `pgm_langs`. Možemo koristiti `assert` naredbu da proverimo da li je element na indeksu 7 zaista ‘C#’.
print(pgm_langs.index('C#')) # Output: 7 assert pgm_langs[7] == 'C#'
Uklanjanje elementa po indeksu pomoću `pop()`
Sada ćemo se usredsrediti na metode lista za uklanjanje elemenata iz Python lista. Metoda `pop()` se koristi za uklanjanje i vraćanje elementa na određenom indeksu. Iz prethodnog primera koda, znamo da je ‘C#’ na indeksu 7.
Kada pozovemo metodu `pop()` na listi `pgm_langs` sa 7 kao indeksom, vidimo da vraća ‘C#’, element sa indeksom 7, i takođe ga uklanja iz liste.
print(pgm_langs.pop(7)) # Output: 'C#' print(pgm_langs) # Output: ['Scala', 'Rust', 'Python', 'JavaScript', 'Java', 'Go', 'C++', 'C']
Dakle, metoda `pop()` uklanja i vraća element sa navedenog indeksa. Međutim, navođenje indeksa je opciono. Kada ne navedete indeks, metoda `pop()` uklanja i vraća poslednji element u Python listi, kao što je prikazano:
print(pgm_langs.pop()) # Output: 'C' print(pgm_langs) # Output: ['Scala', 'Rust', 'Python', 'JavaScript', 'Java', 'Go', 'C++']
Uklanjanje elemenata pomoću `remove()`
Ponekad možda znate koji element želite da uklonite, ali ne i njegov indeks. U tom slučaju, možete koristiti metodu `remove()`, koja kao argument prima element za uklanjanje i uklanja ga. Uklonimo ‘Java’ iz liste `pgm_langs` pomoću metode `remove()`.
pgm_langs.remove('Java') print(pgm_langs) # Output: ['Scala', 'Rust', 'Python', 'JavaScript', 'Go', 'C++']
Uklanjanje svih elemenata pomoću `clear()`
Šta ako želite da uklonite sve elemente iz Python liste? Možete proći kroz listu i ukloniti svaki element koristeći metodu `remove()`, ovako:
for lang in pgm_langs: pgm_langs.remove(lang)
Ali, postoji li bolji način? Da, koristeći metodu `clear()`. Vidimo da poziv metode `clear()` na listi `pgm_langs` uklanja sve elemente, i `pgm_langs` je sada prazna lista.
pgm_langs.clear() print(pgm_langs) # Output: []
Rezime Python metoda za rad sa listama
Brzo da rezimiramo različite metode lista i njihovu sintaksu:
Metoda | Sintaksa | Opis |
insert() | list1.insert(index, elt) | Umeće elt na dati indeks u listu1 |
append() | list1.append(elt) | Dodaje elt na kraj liste1 |
extend() | list1.extend(list2) | Dodaje elemente iz liste2 na kraj liste1 |
sort() | list1.sort() | Sortira listu na licu mesta |
reverse() | list1.reverse() | Obrće redosled elemenata u listi1 na licu mesta |
copy() | list1.copy() | Vraća plitku kopiju liste1 |
count() | list1.count(elt) | Vraća broj pojavljivanja elt u listi1 |
index() | list1.index(elt) | Vraća indeks elt u listi1 |
pop() | list1.pop(index) | Uklanja elt na datom indeksu i vraća ga. |
remove() | list1.remove(elt) | Uklanja elt iz liste1 |
clear() | list1.clear() | Uklanja sve elemente iz liste1 |
Zaključak
Nadam se da vam je ovaj vodič pomogao da razumete kako da koristite neke od najčešćih metoda za rad sa listama u Python-u. Kao sledeći korak, naučite više o Python tuple-ovima i razlikama između lista i tuple-ova u Python-u.
Ako tek učite Python, možete pogledati ovaj spisak resursa za učenje koji su prilagođeni početnicima.