Разумевање листе у Питхон-у – са примерима

U Pajtonu, tehnika poznata kao razumevanje listi omogućava vam da elegantno kreirate nove liste polazeći od postojećih iterabilnih objekata, kao što su liste, stringovi i torke.

Njihova koncizna sintaksa omogućava stvaranje novih listi u jednom jedinom redu koda. Ovaj vodič će vas provesti kroz proces i objasniti kako se to postiže.

U narednim minutima, naučićete:

  • Kako formirati novu listu koristeći for petlje,
  • Sintaksu za korišćenje razumevanja liste u Pajtonu, i
  • Način na koji se razumevanje liste modifikuje pomoću uslovnog iskaza if.

Pored toga, obradićemo nekoliko praktičnih primera koji će vam dodatno pojasniti koncept razumevanja listi.

Zaronimo u materiju.🌊

Kreiranje Pajton listi pomoću for petlji

Zamislite da imate datu listu brojeva. Vaš cilj je da generišete novu listu koja sadrži kubne vrednosti svih brojeva iz originalne liste. Evo kako biste to mogli uraditi koristeći for petlju u Pajtonu:

nums = [2,3,5,7]
num_cubes = []
for num in nums:
  num_cubes.append(num**3)

print(num_cubes)

# Output
[8, 27, 125, 343]

U datom kodu, sledimo ove korake:

  • Inicijalizujemo praznu listu nazvanu `num_cubes`.
  • Iteriramo kroz listu brojeva `nums`.
  • Za svaki broj `num`, izračunavamo njegovu kubnu vrednost korišćenjem operatora stepenovanja: `num**3`.
  • Na kraju, dodajemo izračunatu kubnu vrednost u listu `num_cubes`.

Važna napomena: U Pajtonu, operator stepenovanja `**` se koristi na sledeći način: `num**pow` – broj `num` se podiže na stepen `pow`.

Međutim, ovaj proces možete pojednostaviti koristeći tehniku razumevanja listi u Pajtonu. Nastavimo sa proučavanjem njene sintakse.

Sintaksa razumevanja Pajton liste

Opšta sintaksa za razumevanje liste prikazana je u nastavku.

<nova_lista> = [<izraz> for <stavka> in <iterabilno>]

Razložimo gornju sintaksu:

  • U Pajtonu, liste su omeđene uglastim zagradama `[]` – stoga, izraz razumevanja liste mora biti unutar `[]`.
  • `` `in` `` označava iteraciju kroz iterabilni objekat. Svaki Pajton objekat kroz koji možete prolaziti petljom i pristupati pojedinačnim stavkama, kao što su liste, torke i stringovi, smatra se iterabilnim.
  • `` predstavlja izlaz koji želite izračunati za svaku `` unutar ``.

Zvuči jednostavno, zar ne?

Suština je da želite da izvršite određenu operaciju za svaku stavku u listi (ili bilo kom iterabilnom objektu) kako biste dobili novu listu.

Primenjujući ovo, možemo uprostiti sintaksu, kao što je prikazano na slici ispod.

Sintaksa razumevanja Pajton liste (slika autora)

Sada kada ste upoznati sa sintaksom, vreme je da se posvetimo pisanju koda. Možete koristiti online Pajton IDE da biste pratili primere. Ili, možete ih pokrenuti na vašoj lokalnoj mašini.

Primeri razumevanja Pajton liste

U prethodnom odeljku, kreirali ste novu listu `num_cubes` iz liste `nums`. Počnimo sa prepisivanjem ovog koda korišćenjem razumevanja liste.

Korišćenje razumevanja liste sa brojevima

Sada primenjujemo pojednostavljenu sintaksu na sledeći način:

  • ``: Ovde je potrebno da izračunate kubnu vrednost svakog broja. Zamenite `` sa `num**3`.
  • ``: Promenljiva petlje je `num` – pojedinačni brojevi u listi.
  • ``: Postojeća lista koju imamo je `nums`.
  • I `[num**3 for num in nums]` je konačni izraz. ✅

Kombinovanjem svega ovoga, dobijamo sledeći isečak koda:

num_cubes = [num**3 for num in nums]
print(num_cubes)

# Output
[8, 27, 125, 343]

Čestitamo, napisali ste svoj prvi kod koristeći razumevanje liste.🎉

Idemo dalje, hajde da radimo sa Pajton stringovima.

Korišćenje razumevanja liste sa stringovima

Pretpostavimo da imate listu autora – možete ponovo sastaviti listu sa vašim omiljenim autorima. 😄

authors = ["jane austen","george orwell","james clear","cal newport"]

Obratite pažnju kako su imena autora u gornjoj listi napisana malim slovima. Sada želimo da ih formatiramo tako da svaka reč počinje velikim slovom i da ih sačuvamo u novoj listi pod nazivom `author_list`.

Važna napomena: U Pajtonu, metoda stringa `title()` prihvata string kao argument i vraća kopiju stringa formatiranu tako da svaka reč počinje velikim slovom. Na primer: Ime Prezime.

Dakle, sve što treba da uradite je:

  • Prođite kroz listu autora i za svakog autora na listi,
  • Pozovite `author.title()` da biste dobili kopiju stringa sa velikim početnim slovima.

Pajton kod za ovo prikazan je u nastavku:

authors = ["jane austen","george orwell","james clear","cal newport"]

author_list = [author.title() for author in authors]
print(author_list)

# Output
['Jane Austen', 'George Orwell', 'James Clear', 'Cal Newport']

U gornjem izlazu, primećujemo kako su imena svih autora formatirana sa velikim početnim slovima – tačno onako kako smo želeli.

Korišćenje razumevanja liste sa više listi

Do sada ste naučili kako da koristite razumevanje liste za kreiranje novih listi iz jedne postojeće liste. Sada hajde da naučimo kako da formiramo novu listu iz više listi.

Na primer, razmotrite ovaj zadatak: imate dve liste, `l_arr` i `b_arr`, koje sadrže dužine i širine 4 pravougaonika.

Potrebno je da napravite novu listu `area` koja sadrži površine ovih 4 pravougaonika. Podsetimo se, površina = dužina * širina.

l_arr = [4,5,1,3]
b_arr = [2,1,7,9]

Biće vam potrebni elementi iz obe liste (`l_arr` i `b_arr`) da biste izračunali površinu. Ovo možete postići korišćenjem Pajton funkcije `zip()`.

Važna napomena: U Pajtonu, funkcija `zip()` prihvata jedan ili više iterabilnih objekata kao argumente sa sintaksom `zip(*iterables)`. Zatim, vraća iterator torki, gde svaka torka sadrži po jedan element iz svakog od iterabilnih objekata.

Sledeća slika detaljno opisuje ovaj proces. Imate 4 vrednosti u `l_arr` i `b_arr`, stoga je opseg indeksa od 0 do 3. Kao što možete videti, torka 0 sadrži `l_arr[0]` i `b_arr[0]`, torka 1 sadrži `l_arr[1]` i `b_arr[1]` i tako dalje.

Pajton `zip()` funkcija (slika autora)

Stoga, možete iterirati kroz `zip(l_arr, b_arr)` na sledeći način:

area = [l*b for l,b in zip(l_arr,b_arr)]
print(area)

# Output
[8,5,7,27]

U sledećem odeljku, naučićete kako da koristite uslovne izraze unutar razumevanja liste.

Razumevanje Pajton liste sa uslovnom sintaksom

Počnimo sa nadogradnjom prethodne sintakse za razumevanje liste.

Evo sintakse:

<nova_lista> = [<izraz> for <stavka> in <iterabilno> if <uslov>]

Umesto da izračunate `` za sve stavke, želite to da uradite samo za one stavke koje zadovoljavaju određeni `` – gde je uslov := Tačno. Ovo vodi do pojednostavljene sintakse kao što je prikazano:

Razumevanje Pajton liste sa uslovnom sintaksom (Slika autora)

▶ Pređimo na primere koda.

Razumevanje Pajton liste sa uslovnim primerima

#1. Imate dat string “Učim Pajton 2022”. Želite da izvučete listu svih cifara iz ovog stringa. Kako to uraditi?

U Pajtonu, `.isdigit()` se primenjuje na karakter `` i vraća `True` ako je karakter cifra (0-9); u suprotnom, vraća `False`.

Sledeći isečak koda pokazuje kako možete da sakupite listu svih cifara iz stringa `str1`.

str1 = "I'm learning Python3 in 2022"

digits = [char for char in str1 if char.isdigit()]

print(digits)

# Output
['3', '2', '0', '2', '2']

U gornjem kodu:

  • Prolazite kroz string `str1`,
  • Pristupate svakom karakteru da biste proverili da li je cifra pomoću metode `isdigit()`, i
  • Dodajete `char` u novu listu `digits` samo ako je karakter cifra.

Razmotrimo još jedan primer.

#2. Imate listu voća.🍊 I želite da kreirate listu `pocetni_sa_b` koja sadrži sve voće iz liste voća koje počinju sa slovom ‘b’. Možete koristiti metodu `startswith()` za pisanje uslova.

`.startswith(‘char’)` vraća `True` ako `` počinje sa `’char’`; u suprotnom vraća `False`.

fruits = ['blueberry','apple','banana','orange','cherry']

starts_with_b = [fruit for fruit in fruits if fruit.startswith('b')]

print(starts_with_b)

# Output
['blueberry', 'banana']

U izlazu iznad, dobijamo ‘borovnicu’ i ‘bananu’, što su dva voća koja počinju sa ‘b’ u listi voća, kao što smo i očekivali.

I time se završava naša diskusija o razumevanju liste.

Zaključak

Nadam se da vam je ovaj vodič pomogao da razumete razumevanje listi u Pajtonu.

Hajde da sumiramo:

  • Možete koristiti `[<uradi ovo> for <sve-stavke> in <ova-lista>]` da biste kreirali novu listu koristeći razumevanje liste.
  • Pored toga, možete koristiti sintaksu `[<uradi ovo> for <sve-stavke> in <ova-lista> if <uslov-je-Tačan>]` sa uslovnim iskazom `if`.

Pored toga, kodirali ste i nekoliko primera. Kao sledeći korak, možete pokušati da prepišete neke od vaših postojećih Pajton petlji za kreiranje listi koristeći razumevanje listi. Srećno sa kodiranjem! Vidimo se u sledećem tutorijalu.😄

Sada možete pogledati kako da konvertujete listu u rečnik ili naučiti kako da rukujete datotekama u Pajtonu.