Python → Processing → Nizovi i liste


Nizovi i liste u Python Processing-u


Lekcija 10 od 14

U prethodnim lekcijama koristili smo pojedinačne promenljive za čuvanje podataka. Međutim, u igrama i animacijama često imamo mnogo objekata – više loptica, neprijatelja, projektila ili boja.

Zato koristimo liste (arrays). Lista omogućava da u jednoj promenljivoj čuvamo više vrednosti.


Šta su liste?

Lista je kolekcija elemenata koji mogu biti:

  • brojevi
  • tekst (string)
  • objekti
  • druge liste

Primer definisanja liste:


scores = [0, 0, 0]
colors = ["red", "green", "blue"]
Lista može imati proizvoljan broj elemenata i može se menjati tokom rada programa.

Pristup elementima liste

Elementima pristupamo pomoću indeksa. Indeks u Pythonu počinje od 0.


print(scores[0])   # prvi element
print(colors[2])   # treći element

Ako lista ima 3 elementa, indeksi su:

  • 0
  • 1
  • 2

Dodavanje i uklanjanje elemenata

Liste su dinamičke – možemo dodavati i uklanjati elemente.


scores.append(5)        # dodaje novi element na kraj
last_score = scores.pop()  # uklanja poslednji element

Najčešće operacije nad listama

  • append() – dodaje element
  • pop() – uklanja poslednji element
  • len() – vraća broj elemenata

Prolazak kroz listu (for petlja)

Najčešći način rada sa listama je korišćenje for petlje.


for color in colors:
    print(color)

Rezultat:

  • red
  • green
  • blue

Liste u Processing animacijama

U Processing projektima liste su veoma korisne kada želimo da pratimo više objekata istovremeno.

Na primer, možemo napraviti listu loptica.


balls = []

for i in range(5):
    balls.append(Ball())

Sada možemo animirati sve loptice u draw() funkciji:


for ball in balls:
    ball.move()
    ball.show()
Sada svaka loptica ima svoju poziciju i ponašanje, ali ih sve kontrolišemo pomoću jedne liste.

Mali primer: više krugova na ekranu

Sledeći primer koristi listu koordinata za crtanje više krugova:


circles = [100, 200, 300, 400]

def setup():
    size(600,400)

def draw():
    background(240)

    for x in circles:
        ellipse(x,200,40,40)

Ovaj program crta više krugova koristeći samo jednu listu.


Povezivanje sa prethodnim lekcijama


Mini projekat: više krugova pomoću liste

Napravimo mali interaktivni primer gde lista čuva pozicije krugova. Svaki klik miša dodaje novi krug na ekran.


circles = []

def setup():
    size(600,400)

def draw():
    background(240)

    for c in circles:
        ellipse(c[0], c[1], 40, 40)

def mousePressed():
    circles.append([mouseX, mouseY])

Kako radi ovaj program?

  • lista circles čuva pozicije krugova
  • svaki element liste ima oblik [x, y]
  • klik miša dodaje novi element u listu
  • draw() petlja iscrtava sve krugove

Na ovaj način možemo napraviti neograničen broj objekata u programu.

Zadaci za vežbu

  • Kreirajte listu boja i iscrtajte kvadrate u tim bojama
  • Kreirajte više loptica koristeći listu objekata
  • Dodajte novu lopticu klikom miša
  • Napravite listu pozicija i nacrtajte krug na svakoj poziciji

Šta smo naučili?

  • šta su liste u Pythonu
  • kako pristupiti elementima liste
  • kako dodavati i uklanjati elemente
  • kako koristiti liste u Processing animacijama

Često postavljana pitanja

Šta su liste u Pythonu?

Lista je struktura podataka koja omogućava čuvanje više vrednosti u jednoj promenljivoj. Elementi liste mogu biti brojevi, tekst ili objekti.

Koja je razlika između promenljive i liste?

Promenljiva čuva jednu vrednost, dok lista može sadržati više vrednosti koje se pristupaju pomoću indeksa.

Zašto su liste važne u igrama i animacijama?

Liste omogućavaju upravljanje velikim brojem objekata poput neprijatelja, projektila ili loptica u animaciji.

Da li liste mogu sadržati objekte?

Da. U Pythonu lista može sadržati bilo koji tip podataka, uključujući i objekte definisane klasama.