Python - Liste


Kako kreirati listu?

U programiranju u Pythonu, lista se kreira stavljanjem svih stavki (elemenata) u uglate zagrade [ ], odvojene zarezima. Može imati bilo koji broj predmeta i mogu biti različitih tipova (cijeli broj, float, string itd.).

# prazna lista
my_list = []

# lista cijelih brojeva
my_list = [1, 2, 3]

# lista s mješovitim tipovima podataka
my_list = [1, "Hello", 3.4]

Lista može imati i drugu listu kao stavku. To se naziva ugniježdena lista.

# ugnježdena lista
my_list = ["mouse", [8, 4, 6], ['a']]


Kako pristupiti elementima sa liste?

Postoje različiti načini na koje možemo pristupiti elementima liste.



Indeks liste

Možemo koristiti operator indeksa [] za pristup stavci na listi. U Pythonu indeksi počinju na 0. Dakle, lista koja ima 5 elemenata imat će indeks od 0 do 4. Pokušaj pristupa indeksima koji nisu ovi izvest će IndexError. Indeks mora biti cijeli broj. Ne možemo koristiti float ili druge tipove, ovo će rezultirati TypeError. Ugnježdenim listama pristupa se pomoću ugniježdenog indeksiranja.

# Index-si liste

my_list = ['p', 'r', 'o', 'b', 'e']

# Ispisuje: p
print(my_list[0])

# Ispisuje: o
print(my_list[2])

# Ispisuje: e
print(my_list[4])

# Ugnježdene liste
n_list = ["Happy", [2, 0, 1, 5]]

# Ugniježdeno index-siranje
print(n_list[0][1])

print(n_list[1][3])

# Greška! Za indeksiranje se može koristiti samo cijeli broj
print(my_list[4.0])


Negativno indeksiranje

Python omogućava negativno indeksiranje svojih sekvenci. Indeks -1 odnosi se na posljednju stavku, -2 na drugu posljednju stavku i tako dalje.

# Negativno index-siranje na listama
my_list = ['p','r','o','b','e']

print(my_list[-1])

print(my_list[-5])

Sljedeća ilustracija prikazuje kako izgleda negativno ideksiranje




Kako izrezati liste u Pythonu?

Možemo pristupiti nizu stavki na popisu pomoću operatora : (dvotačke).

# Rezanje (slicing) liste u Python-u

my_list = ['i','t','t','u','t','o','r','i','j','a','l','i']

# elementi od 3. do 5.
print(my_list[2:5])

# elementi koji počinju do 4.
print(my_list[:-5])

# elementi 6. do kraja
print(my_list[5:])

# elementi počinju do kraja
print(my_list[:])

Rezanje (Slicing) se može najbolje vizualovati uzimajući u obzir da je indeks između elemenata kao što je prikazano u sljedećoj ilustraciji. Dakle, ako želimo pristupiti opsegu, trebaju nam dva indeksa koji će taj dio isjeći sa liste.




Kako promijeniti ili dodati elemente na listu?

Liste su promjenjive, što znači da se njihovi elementi mogu mijenjati za razliku od stringa ili tuple. Možemo koristiti operator dodjele (=) za promjenu stavke ili niza stavki.

# Ispravljanje vrijednosti grešaka na listi
odd = [2, 4, 6, 8]

# promijeni 1. stavku
odd[0] = 1            

print(odd)

# promijeni 2-gu u 4-tu stavku
odd[1:4] = [3, 5, 7]  

print(odd)                   

Možemo dodati jednu stavku na listu metodom append() ili dodati nekoliko stavki metodom extension().

# Dodavanje i proširivanje liste u Python-u
odd = [1, 3, 5]

odd.append(7)

print(odd)

odd.extend([9, 11, 13])

print(odd)

Takođe možemo koristiti + operator da kombinujemo dvije liste. To se takođe naziva spajanjem. Operator * ponavlja listu određeni broj puta.

# Spajanje i ponavljanje lista
odd = [1, 3, 5]

print(odd + [9, 7, 5])

print(["re"] * 3)

Nadalje, možemo umetnuti jednu stavku na željeno mjesto pomoću metode insert() ili umetnuti više stavki tako što ćemo je ubaciti u prazan dio liste.

# Demonstracija metode insert() u listama
odd = [1, 9]
odd.insert(1,3)

print(odd)

odd[2:2] = [5, 7]

print(odd)


Kako izbrisati ili ukloniti elemente sa liste?

Pomoću ključne riječi del možemo izbrisati jednu ili više stavki sa liste. Može se čak listu u potpunosti izbrisati.

# Brisanje stavki liste
my_list = ['p', 'r', 'o', 'b', 'l', 'e', 'm']

# brisanje jedne stavke liste
del my_list[2]

print(my_list)

# brisanje više stavki liste
del my_list[1:5]

print(my_list)

# brisanje cijele listu
del my_list

# Error: List not defined
print(my_list)

Možemo koristiti metodu remove() za uklanjanje zadate stavke ili metodu pop() za uklanjanje stavke u datom indeksu. Metoda pop() uklanja i vraća zadnju stavku ako indeks nije naveden. To nam pomaže da implementujemo liste kao stekove (struktura podataka prvi ulaz, zadnji izlaz). Možemo koristiti i metodu clear() za pražnjenje liste.

my_list = ['p','r','o','b','l','e','m']
my_list.remove('p')

# Ispisuje: ['r', 'o', 'b', 'l', 'e', 'm']
print(my_list)

# Ispisuje: 'o'
print(my_list.pop(1))

# Ispisuje: ['r', 'b', 'l', 'e', 'm']
print(my_list)

# Ispisuje: 'm'
print(my_list.pop())

# Ispisuje: ['r', 'b', 'l', 'e']
print(my_list)

my_list.clear()

# Ispisuje: []
print(my_list)

Konačno, stavke na listi možemo i izbrisati dodavanjem prazne liste elemenata.

>>> my_list = ['p','r','o','b','l','e','m']
>>> my_list[2:3] = []
>>> my_list
['p', 'r', 'b', 'l', 'e', 'm']
>>> my_list[2:5] = []
>>> my_list
['p', 'r', 'm']