✦ Srednji nivo Pythona i OOP Srednji nivo Pythona

L2 · Koncept 01 · Naprednije Python tehnike

Gradite kolekcije
iz jedne jasne ideje.

Comprehensions pretvaraju poznatu petlju u usmeren način za pravljenje nove liste, skupa ili rečnika.

Cilj učenjaKoristite list, set i dictionary comprehensions da transformišete ili filtrirate podatke iz kolekcija i prepoznajte kada je obična for petlja jasnija.
01 Uči02 Isprobaj03 Predvidi

Učenje kao gost

Učiš kao gost — sačuvaj svoj napredak!

Napravi besplatan nalog i uči uz Sloby AI mentora, proveru razumevanja i praćenje napretka.

Cela platforma je besplatna tokom 2026. Foundations ostaje zauvek besplatan.

Comprehension pravi kolekciju dok prolazi kroz podatke.

Obična for petlja je često najjasniji početak. Kada petlja ima jedan usmeren zadatak — da napravi kolekciju — comprehension može da izrazi istu ideju u jednoj čitljivoj liniji.

numbers = [1, 2, 3, 4]

squares = []
for number in numbers:
    squares.append(number * number)

# The same focused transformation:
squares = [number * number for number in numbers]

Obe verzije prolaze kroz svaki number i dodaju njegov kvadrat u novu listu. Comprehension drži izraz rezultata, promenljivu petlje i izvorne podatke zajedno.

print(squares) # [1, 4, 9, 16]

Zagrade biraju tip rezultata: [] pravi listu, {} sa jednim izrazom pravi skup, a {key: value} pravi rečnik.

↳

Čitljivost je na prvom mestu: Koristite običnu petlju kada posao traži više koraka, više sporednih efekata ili dug ugnježden uslov. Kratka comprehension treba da olakša, a ne oteža čitanje koda.

Praktični primeri
names = ["ana", "marko", "jelena"]
uppercase_names = [name.upper() for name in names]

words = ["Python", "practice", "Python"]
initials = {word[0].lower() for word in words}

scores = {"Ana": 82, "Marko": 45, "Jelena": 91}
passed_scores = {name: score for name, score in scores.items() if score >= 60}

Prva linija pretvara svako ime u listu. Druga čuva jedinstvena početna slova u skupu. Poslednja u rečniku čuva samo parove imena i poena učenika koji su položili.

List comprehension — transformišite svaku stavku
prices = [100, 250, 80]
with_tax = [price * 1.2 for price in prices]

Izraz pre for je vrednost koja se dodaje za svaku cenu.

Set comprehension — sačuvajte jedinstvene rezultate
cities = ["Novi Sad", "Niš", "Novi Sad"]
lengths = {len(city) for city in cities}

Skup uklanja duplirane rezultate. Nemojte ga koristiti kada je redosled prikaza važan.

Dictionary comprehension — napravite parove ključ–vrednost
words = ["python", "code"]
word_lengths = {word: len(word) for word in words}

Stavite ključ i vrednost pre for. Ponovljeni ključevi zamenjuju raniju vrednost, zato pažljivo birajte ključeve.

Čitajte comprehension zdesna nalevo

  1. 1. Počnite od izvorafor name, score in scores.items() daje po jedan par imena i poena.
  2. 2. Izaberite izraz rezultataname, score * 1.2 ili name: score opisuju šta doprinosi jedna iteracija.
  3. 3. Dodajte opcioni filterif score >= 60 zadržava samo iteracije koje ispunjavaju uslov; ne pokreće else granu.
  4. 4. Proverite spoljne zagradeUglaste zagrade prave listu, vitičaste zagrade prave skup, a key: value unutar vitičastih zagrada pravi rečnik.

Česte greške

  • Biranje pogrešne kolekcijeKoristite listu za uređene rezultate, skup za jedinstvene vrednosti i rečnik kada svakoj vrednosti treba smislen ključ.
  • Očekivanje redosleda skupaSkupovi su korisni za jedinstvenost, a ne za predvidiv redosled prikaza.
  • Slučajno ponavljanje ključa rečnikaKasnija vrednost za isti ključ zamenjuje raniju.
  • Skrivanje previše posla u jednoj linijiAko liniju morate više puta da objašnjavate, radije koristite običnu petlju sa imenovanim međuvrednostima.

Python radni prostor

Učitavanje Python okruženja…

Promenite izvorne podatke, izraz rezultata ili filter. Predvidite novu kolekciju pre pokretanja koda.

comprehensions.pyPython
IzlazČeka se Python
Okruženje pregledača se učitava. I dalje možeš da menjaš primer koda.

Pyodide pokreće Python u Web Worker-u pregledača. Zaustavlja se i ponovo pokreće ako se kod predugo izvršava. Izvršavanje u pregledaču nije potpuna bezbednosna granica; ne unosi tajne i ne oslanjaj se na njega za izolaciju nepouzdanog koda.

Šta će ovaj program ispisati?

Prvo pratite filter. Samo parni brojevi stižu do izraza pre for.

numbers = [1, 2, 3, 4, 5]
doubled_evens = [number * 2 for number in numbers if number % 2 == 0]

print(doubled_evens)
Izaberi izlaz

Vežbajte samostalno

Mini izazov — Prolazni poeni

Pokušajte sami pre nego što zatražite nagoveštaj. Već poznajete svaki potreban deo.

Vaš ciljNapravite listu imena učenika koji su položili, rečnik njihovih poena i — ako želite dodatni izazov — skup jedinstvenih poena.

passing_scores_challenge.py

Opcioni nagoveštaji
  • Koristite scores.items() kada su vam zajedno potrebni ime i njegovi poeni.
  • Filter ide na kraj: ... for name, score in scores.items() if score >= 60.
Pitajte Slobyja za nagoveštaj
Sloby, maskota Python AI Tutora

Tvoj mentor za učenje

Prijavite se da pitate Slobyja

Napravite besplatan nalog ili se prijavite za AI smernice tokom učenja.

Prijavite se da proverite svoje razumevanje

Napravite besplatan nalog ili se prijavite da biste dobili AI povratnu informaciju i sačuvali napredak u učenju.

Python AI Tutor · Uči razumevanjem, a ne samo pokretanjem koda.