Како филтрирати листу у Питхон-у на прави начин да добијете више од својих података

U Pajtonu, jedan od najčešće korišćenih načina za organizovanje sekvencijalnih podataka je putem lista. Lista u Pajtonu predstavlja uređenu, promenljivu i ugrađenu strukturu podataka koja služi za skladištenje kolekcije informacija. Elementi unutar liste su indeksirani počevši od nule, a korisnici imaju mogućnost da menjaju sadržaj liste nakon njenog kreiranja.

Indeksiranje elemenata u listi omogućava pohranjivanje duplikata. Pored toga, Pajton liste mogu da sadrže različite tipove podataka. Elementi liste se razdvajaju zarezima i smeštaju unutar uglastih zagrada.

Evo nekoliko primera lista u Pajtonu:

# Lista koja sadrži jedan tip podataka - stringove
boje = ['Crvena', 'Narandžasta', 'Žuta', 'Zelena', 'Plava', 'Indigo', 'Ljubičasta']

# Lista koja sadrži više tipova podataka
filmovi = ['Transformersi', 2012, 'Osvetnici', 300]

# Lista sa duplikatima
korisnici = ['Jovan', 'Marija', 'Elizabeta', 'Jovan']

Liste su veoma prilagodljive strukture podataka sa kojima je moguće izvršiti brojne operacije. Jedna od uobičajenih i korisnih operacija je filtriranje podataka smeštenih u listi.

Zašto je filtriranje lista bitno?

Filtriranje liste podrazumeva izdvajanje specifičnih podskupova podataka koji zadovoljavaju određene uslove. Na primer, možda nas interesuju samo parni brojevi unutar liste brojeva od 1 do 10. Da bismo izdvojili takve podatke, potrebno je filtrirati listu i dobiti samo one brojeve koji su deljivi sa dva.

Filtriranje je izuzetno korisno u manipulaciji i analizi podataka jer omogućava uklanjanje neželjenih elemenata, kreiranje novih lista sa elementima koji ispunjavaju date kriterijume, i izdvajanje informacija koje zadovoljavaju određene uslove.

Neki praktični primeri filtriranja lista uključuju:

  • Verifikacija podataka – Kada radite sa listom, možda želite da koristite samo podatke koji ispunjavaju određene kriterijume. Na primer, u listi korisnika, možda su vas zainteresovani samo oni sa punim imenom i prezimenom. Filtriranje omogućava verifikaciju podataka pre obrade, čime se izbegava rad sa neadekvatnim informacijama.
  • Čišćenje podataka – Budući da liste mogu da sadrže različite tipove podataka, često se dešava da se u njima nađu neželjeni elementi. Na primer, u listi imena, mogu se pojaviti i numeričke vrednosti koje nisu relevantne. Filtriranje omogućava uklanjanje takvih elemenata.
  • Analiza podataka – Filtriranje podataka je posebno korisno u analizi podataka jer omogućava fokusiranje na specifične podskupove, olakšavajući identifikaciju obrazaca i trendova. Na primer, na listi učenika, možete filtrirati učenike i studente i koristiti rezultat za dalju analizu. Takođe, možete filtrirati po starosti, lokaciji ili razredu, što omogućava izvlačenje korisnih zaključaka iz ciljanih grupa podataka.

Filtriranje lista je veoma korisna funkcija koja daje kontrolu nad podacima, omogućavajući vam da radite isključivo sa onim što je relevantno.

Ciljanje specifičnih podskupova podataka u listi je korisno jer pojednostavljuje obradu i analizu podataka, čineći te procese efikasnijim, bržim i preciznijim.

Korišćenje funkcije `filter()`

Funkcija `filter()` je ugrađena Pajton funkcija koja se koristi za iteriranje kroz iterabilne objekte, kao što su liste, torke, skupovi ili rečnici, i za izdvajanje elemenata koji zadovoljavaju dati uslov.

Iterabilni objekat u Pajtonu je onaj kroz čije elemente se može prolaziti jedan po jedan. Iteracija kroz iterabilni objekat vraća njegove elemente pojedinačno.

Sintaksa funkcije `filter()` je:

filter(funkcija, iterabilni_objekat)

`funkcija` – Pajton funkcija koja sadrži uslov za filtriranje

`iterabilni_objekat` – objekat koji se filtrira. U ovom slučaju, to će biti lista.

Funkcija `filter()` primenjuje prosleđenu funkciju na svaki element iterabilnog objekta, testirajući da li element ispunjava uslov za filtriranje. Ako element ispunjava uslov, odnosno vraća `True`, funkcija `filter()` ga izdvaja. U suprotnom, element se ne bira.

Funkcija `filter()` vraća iterabilni objekat sa izabranim elementima. Novu listu sa elementima koji su prošli filtriranje možete kreirati pomoću funkcije `list()`.

Da biste videli funkciju `filter()` na delu, razmotrite sledeću listu, koja se filtrira tako da se izaberu samo brojevi manji od 50:

# Lista brojeva
brojevi = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

# Funkcija koja sadrži uslov filtriranja
def je_manji_od_50(broj):
    if broj < 50:
        return True
    else:
        return False

# Funkcija list() se koristi za kreiranje liste od iterabilnog objekta
# koji vraća funkcija filter()
filtrirani_brojevi = list(filter(je_manji_od_50, brojevi))
print(filtrirani_brojevi)

Gornji kod štampa sledeći rezultat:

[15, 46, 24, 37]

Korišćenje `for` petlje

U Pajtonu, `for` petlja je kontrolna naredba koja se koristi za iteriranje kroz sekvencijalne strukture podataka kao što su liste, torke, stringovi i nizovi. Petlja `for` izvršava blok koda više puta, za svaki element u sekvenci.

Opšta sintaksa za `for` petlju je:

for element in iterabilni_objekat:
    # Blok koda koji se izvršava za svaki element

`element` – promenljiva koja predstavlja trenutni element koji se obrađuje u iteraciji petlje

`iterabilni_objekat` – sekvenca kroz koju `for` petlja prolazi. U ovom slučaju, to je lista.

Za filtriranje liste pomoću `for` petlje, uslov filtriranja treba da se postavi unutar bloka koda. Na taj način, svaki element će biti proveren da li ispunjava dati uslov.

Kada koristite `for` petlju za filtriranje liste, potrebno je kreirati praznu listu u koju ćete dodati elemente koji ispunjavaju uslov filtriranja.

Da biste videli kako to funkcioniše, filtrirajmo listu brojeva i izaberimo samo one brojeve koji su manji od 50, koristeći `for` petlju:

brojevi = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

filtrirani_brojevi = []

for broj in brojevi:
    if broj < 50:
        # append() se koristi za dodavanje brojeva koji ispunjavaju uslov
        # u listu filtrirani_brojevi.
        filtrirani_brojevi.append(broj)

print(filtrirani_brojevi)

Gornji kod štampa sledeći rezultat:

[15, 46, 24, 37]

Korišćenje druge liste

Možete da filtrirate listu koristeći drugu listu tako što ćete proveriti da li se element iz liste koju filtrirate pojavljuje u drugoj listi. Na primer, razmotrite sledeće dve liste:

slova = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']

samoglasnici = ['a', 'e', 'i', 'o', 'u']

U listi `slova`, možemo da odredimo koji elementi nisu samoglasnici tako što ćemo proveriti da li se element nalazi u listi `samoglasnici`. Ako se element ne nalazi u listi `samoglasnici`, to znači da nije samoglasnik.

Na ovaj način, možemo da dobijemo sve karaktere u `slova` koji nisu samoglasnici. Da bismo to uradili, izvršimo sledeći kod:

slova = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
samoglasnici = ['a', 'e', 'i', 'o', 'u']

nisu_samoglasnici = []

for slovo in slova:
    if slovo not in samoglasnici:
        nisu_samoglasnici.append(slovo)
print(nisu_samoglasnici)

Gornji kod štampa sledeći izlaz, koji sadrži karaktere iz `slova` koji nisu samoglasnici:

['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

Korišćenje list comprehension

U Pajtonu, list comprehension nudi kraću, sažetiju i pregledniju sintaksu za kreiranje nove liste na osnovu postojeće. List comprehension ima mogućnost da smanji više redova koda za kreiranje nove liste koristeći `for` petlju u jedan red.

To je zato što prilikom korišćenja list comprehension, vi definišete i dodajete elemente u novu listu u istom redu.

Sintaksa za list comprehension je:

nova_lista = [izraz for element in iterabilni_objekat if uslov]

`nova_lista` – nova lista koja sadrži elemente dodate pomoću list comprehension

`izraz` – operacija koja će biti primenjena na svaki element iterabilnog objekta

`element` – ime promenljive koja predstavlja trenutni element u iterabilnom objektu

`iterabilni_objekat` – iterabilni objekat iz kojeg će se birati elementi

`if uslov` – opcioni deo u kome se može dodati uslov za filtriranje elemenata, tako da se samo oni koji zadovoljavaju dati uslov dodaju u novu listu.

Da biste videli list comprehension na delu i kako pojednostavljuje proces filtriranja i kreiranja nove liste, koristićemo listu `slova` i `samoglasnici` da filtriramo elemente iz liste `slova` koji se ne nalaze u listi `samoglasnici`. Da bismo to uradili, izvršimo sledeći kod:

slova = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
samoglasnici = ['a', 'e', 'i', 'o', 'u']

# list comprehension
nisu_samoglasnici = [slovo for slovo in slova if slovo not in samoglasnici]
print(nisu_samoglasnici)

Izlaz gornjeg koda je prikazan ispod:

['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']

Izlaz je isti kao u prethodnom primeru, koji je koristio `for` petlju, ali sa manje linija koda.

Zaključak

Kada radite sa podacima u Pajtonu, jedna od uobičajenih operacija je filtriranje podataka iz iterabilnih objekata kao što su liste. To je koristan korak u analizi i obradi podataka, jer omogućava da radite samo sa podacima koji su relevantni za operaciju koju izvršavate.

Lista je veoma popularna sekvencijalna struktura podataka u Pajtonu. Ako radite sa listom i potrebno je filtrirati, razmotrite upotrebu jedne od metoda opisanih u ovom tekstu.

Takođe, možete pročitati kako koristiti lambda funkcije u Pajtonu sa primerima.