MC, 2025
Ilustracja do artykułu: Neverjetni python list comprehension tricks, ki jih še ne poznaš!

Neverjetni python list comprehension tricks, ki jih še ne poznaš!

Seznamski izrazi (ang. list comprehensions) so eden izmed najbolj priljubljenih in zmogljivih delov jezika Python. S pravilno uporabo teh izrazov lahko bistveno skrajšamo kodo, jo naredimo bolj berljivo in hkrati poskrbimo za boljšo učinkovitost. Čeprav so osnovni primeri dokaj enostavni, obstaja kar nekaj naprednih trikov in vzorcev, ki jih mnogi programerji še niso odkrili. V tem članku bomo raziskali python list comprehension tricks in predstavili tudi številne python list comprehension tricks przykłady (primere), ki vam bodo pomagali postati pravi mojster Pythona.

Osnove seznamskih izrazov

Za začetek se spomnimo osnovnega primera seznamskega izraza:

squared = [x**2 for x in range(10)]

To ustvari seznam kvadratov števil od 0 do 9. Zelo lepo, kajne? A to je šele začetek.

Dodajanje pogojev (if)

V seznamskih izrazih lahko uporabimo tudi pogoje za filtriranje:

even = [x for x in range(20) if x % 2 == 0]

Ta vrstica bo ustvarila seznam vseh sodih števil od 0 do 19. Zelo uporabno pri vsakodnevnem filtriranju podatkov.

Uporaba else stavka

Če želite v seznam vključiti tudi "else" del, ga morate zapisati nekoliko drugače:

parnost = ["sodo" if x % 2 == 0 else "liho" for x in range(5)]

Rezultat bo: ["sodo", "liho", "sodo", "liho", "sodo"]. To je eden najbolj priljubljenih python list comprehension tricks.

Ugnezdeni seznamski izrazi

Seznam v seznamu? Seveda! Z malo domišljije lahko ustvarimo celo matrike:

matrix = [[i * j for j in range(1, 4)] for i in range(1, 4)]

To ustvari 3x3 matriko z množenjem vrstičnih in stolpčnih indeksov.

Ploskanje seznama seznamov

Želite "splattati" seznam seznamov? Brez problema:

flattened = [num for sublist in [[1,2], [3,4], [5,6]] for num in sublist]

Rezultat je: [1, 2, 3, 4, 5, 6]. Eden najbolj uporabnih python list comprehension tricks przykłady!

Uporaba večih zank

Seznamski izrazi omogočajo več zank:

kombinacije = [(x, y) for x in [1, 2, 3] for y in ['a', 'b']]

Ustvarimo vse kombinacije števil in črk. Popolno za generiranje testnih primerov.

Uporaba funkcij znotraj seznamskih izrazov

Klicanje funkcij znotraj izraza? Da!

def kvadrat(x): return x ** 2
rezultat = [kvadrat(i) for i in range(5)]

Praktično pri ponovni uporabi logike ali bolj zapletenih operacij.

Set in dict comprehension triki

Niso samo seznami! Python podpira tudi set in slovarje:

unikatni = {x for x in [1,2,2,3,3,3]}
kvadrati = {x: x**2 for x in range(5)}

Set comprehension pomaga pri odstranjevanju duplikatov, slovar pa omogoča lepo preslikavo ključ-vrednost.

Filtriranje z več pogoji

Uporaba več pogojev? Preprosto združimo z logičnimi operatorji:

filtrirani = [x for x in range(30) if x % 2 == 0 and x % 3 == 0]

Dobimo vsa števila, deljiva z 2 in 3. Hitro in jasno.

List comprehension in datoteke

Poglejmo, kako lahko preberemo in obdelamo vrstice datoteke:

with open('datoteka.txt') as f:
    vrstice = [line.strip() for line in f if line.strip()]

Ta izraz odstrani prazne vrstice in bele presledke – uporabno pri čiščenju podatkov.

Primer: generiranje HTML elementov

Potrebujete hitre HTML vrstice za seznam?

html = [f"<li>{x}</li>" for x in ['jabolko', 'banana', 'češnja']]

Rezultat: ['<li>jabolko</li>', '<li>banana</li>', '<li>češnja</li>'].

Ugnezdeni pogojni izrazi

Seznamski izrazi podpirajo celo pogoj v pogojih:

ocene = [("odlično" if x > 90 else "dobro" if x > 75 else "zadostno") for x in [92, 80, 70]]

Odlična rešitev za razvrščanje rezultatov ali kategorizacijo podatkov.

Uporaba enumerate in zip

Ne pozabimo na enumerate in zip kombinacije:

seznami = [f"{i}: {vrednost}" for i, vrednost in enumerate(['a', 'b', 'c'])]
zdruzeni = [f"{a}-{b}" for a, b in zip([1, 2, 3], ['x', 'y', 'z'])]

Odlično za povezovanje elementov iz različnih virov ali sledenje indeksom.

Generator izrazi kot alternativa

Če ne potrebujete takojšnjega seznama, raje uporabite generator:

generator = (x**2 for x in range(10))

To ne porabi pomnilnika za celoten seznam in je idealno za obdelavo velikih količin podatkov.

Zaključek: zakaj ljubimo seznamke v Pythonu

Seznamski izrazi so v Pythonu več kot le bližnjica. So način razmišljanja. Omogočajo nam izražanje idej na jasen, kratek in eleganten način. S pomočjo teh python list comprehension tricks boste lahko izboljšali svojo kodo in naredili več z manj truda.

Upamo, da so vam ti python list comprehension tricks przykłady pomagali odpreti oči za vse, kar se da narediti. Poskusite jih uporabiti že danes – in verjemite, nikoli več ne boste želeli pisati dolgih for-zank!

Komentarze (0) - Nikt jeszcze nie komentował - bądź pierwszy!

Imię:
Treść: