Úvod do porozumenia zoznamu Python

Porozumenie zoznamu Python je ďalším spôsobom vytvárania zoznamov pomocou operácie iterácie. Funguje to rovnako ako slučka, ale LC sa používa špeciálne na vrátenie zoznamov. Porozumenia zoznamu majú výrazy v zátvorkách, ako je vytvorenie normálneho zoznamu, výraz sa vykoná pre všetky prvky.

Zoznamy s porozumením sú veľmi užitočné v oblasti vedy o údajoch, kde jeden zoznam prečítaných / názvy stĺpcov filtrov / odstraňovanie položiek zo zoznamov atď. Aj keď na vykonanie určitej akcie môžeme použiť slučky a funkcie lambda, porozumenie zoznamu poskytuje elegantný a jednoduchý spôsob, ako ich reprezentovať.
Zoznamy s porozumením možno použiť na nahradenie metód map (), redu () a filter ().
Porozumenie zoznamu je ako teória množín zo stredných škôl.

Príklad:

( x: x is a natural number greater than 15 )
( x: x is a vowel in word 'Data Science', x is a vowel )

Vytvorme zoznam s porozumením pre vyššie uvedené dva výroky.

(x for x in range(0, 20) if x>15) (x for x in 'Data Science' if x in ('a', 'e', 'i', 'o', 'u'))

Výkon:

(16, 17, 18, 19) („a“, „a“, „i“, „e“, „e“)

Porozumenie zoznamu je ľahko zrozumiteľné a implementovateľné. V zásade sa vytvárajú na tabuľkách. Pri písaní syntaxe na porozumenie zoznamom je potrebné vziať do úvahy tri veci.

  1. Parameter pre výstup
  2. Iterable
  3. podmienky

Syntax môže mať dve z vyššie uvedených alebo 3 z nich ako syntax pre porozumenie zoznamu.

syntaxe:

(output parameter | The Iterable)
(output Parameter | The Iterable | Condition )

Príklady porozumenia zoznamu Python

Tu budeme diskutovať o tom, ako používať porozumenie zoznamu pomocou pythonu. Uvidíme príklady iným spôsobom, keď ich spustíme pomocou slučky for loop a potom ich vytvoríme pomocou porozumenia zoznamu.

Príklad č. 1: Nájdenie perfektných štvorcov

Tu uvádzame príklady dokonalých štvorcov s rôznymi podmienkami:

1. S pre slučku

for i in range(1, 30):
if int(i**0.5)==i**0.5:
print(i)

2. Používanie porozumenia zoznamu

(x for x in range(1, 30) if int(x**0.5)==x**0.5)

Výkon:

Príklad č. 2: Získajte iba súzvuky z vety

Tu vezmeme jednu svojvoľnú vetu a pokúsime sa dostať súhlásky do vety ako náš výstup.

1. Použitie pre slučku

def consonants_for(sentence):
vowels = 'aeiou'
consonants = () for x in sentence:
if x not in vowels:
consonants.append(x)
return ''.join(consonants)
sentence = 'we are studying list comprehensions'
print("With For Loop : " + consonants_for(sentence))

Výkon:

Pri slučke For Loop: wr stdyng lst cmprhnsns

2. Používanie porozumenia zoznamu

def consonants_lc(sentence):
vowels = 'aeiou'
return ''.join(( x for x in sentence if x not in vowels))
sentence = 'we are studying list comprehensions'
print("Using List Compr: " + consonants_lc(sentence))

Výkon:

Použitie zoznamu Compr: wr stdyng lst cmprhnsns

Príklad č. 3: Vytvorenie slovníka z dvoch, na rozdiel od zoznamov

Nižšie uvádzame príklady slovníka s rôznymi podmienkami:

1. Použitie pre slučku

def dict_for(keys, values):
dictionary = ()
for i in range(len(keys)):
dictionary(keys(i)) = values(i) return dictionary
Movie = ('RDB', 'Wanted', 'DDLG', 'Sholay', 'War', ) Actor = ('Aamire', 'Salman', 'SRK', 'Amitabh', 'Hritik') print("FOR-loop result: " + str(dict_for(Movie, Actor)))

Výkon:

Výsledok FOR-loop: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')

2. Používanie porozumenia zoznamu

def dict_lc(keys, values):
return ( keys(i) : values(i) for i in range(len(keys)) )
Movie = ('RDB', 'Wanted', 'DDLG', 'Sholay', 'War', ) Actor = ('Aamire', 'Salman', 'SRK', 'Amitabh', 'Hritik') print("LC result : " + str(dict_lc(Movie, Actor)))

Výkon:

Výsledok LC: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')

Výhody porozumenia zoznamu Python

Zoznam porozumení vykonáva rovnakú úlohu, ale iným spôsobom!

Porozumenie zoznamu má oproti slučke a iným metódam mnoho výhod. Niektoré z výhod sú nasledujúce:

  1. Porozumenie zoznamu je ľahko zrozumiteľné a robí kód elegantným. Program môžeme napísať jednoduchými výrazmi.
  2. Porozumenie zoznamu je oveľa rýchlejšie ako v prípade slučky a iných metód, ako je mapa. (To isté je vysvetlené v nasledujúcom príklade:

Vezmeme príklad 1 ako referenciu a vypočítame čas potrebný na vykonanie rovnakej funkcie rôznymi metódami. Najprv uvidíme čas „pre slučku“ a potom čas pomocou metódy map () a nakoniec uvidíme čas potrebný na porozumenie zoznamu.

Tabuľka ukazuje čas potrebný na rôzne techniky.

1. Pre slučku

Príklad použitia pre slučku uvedenú nižšie:

kód:

def perf_square(x):
output = () for i in x:
if int(i**0.5)==i**0.5:
output.append(i)
return output
%timeit perf_square(range(1, 30))

2. Metóda mapy

Príklad pomocou metódy mapy uvedenej nižšie:

kód:

def perf_square_map(x):
return map(lambda i: i**0.5==i**0.5, x)
%timeit perf_square_map(range(1, 30))

3. Zoznam porozumení

Príklad použitia nižšie uvedeného porozumenia zoznamu:

kód:

def perf_square_lc(x):
return (i**0.5 == i**0.5 for i in x) %timeit perf_square_lc(range(1, 30))

Výkon:

metódačas
Pre slučku787 ns
Metóda Map ()518 ns
Zoznam porozumení276 ns

Jednoznačné trvanie porozumenia zoznamu je 2, 85 krát rýchlejšie ako v prípade slučky a 1, 87 krát rýchlejšie ako metóda mapy. Zoznam porozumení zanecháva iné metódy s veľkým odstupom. Mohli by tu byť špekulácie, tak prečo nepoužívame iba LC na všetkých miestach a nie slučky? LC je vo väčšine prípadov rýchlejšia a v takmer 80% prípadov môže nahradiť slučky. Ale nemôžeme nahradiť slučky, v niektorých prípadoch máme niekoľko dobrých podmienok a triedy sú vnorené do slučky. V týchto prípadoch by použitie LC mohlo byť dosť ťažkopádne a tiež nerealizovateľné. V takýchto situáciách je lepšie ísť za slučkami. Aj keď je možné použiť zoznam s porozumením pre slučky ako náhradu za slučky. Zníži sa tým čas vykonávania a zachová sa užívateľská prívetivosť kódu.

  • V porozumení zoznamu môžeme vnoriť viacero podmienok.
  • LC môže vykonávať viacnásobnú variabilnú manipuláciu.
  • Na získanie výstupu nie je potrebné zadávať samostatný príkaz.
  • Zrozumiteľnosť zoznamu znižuje zložitosť kódu.
  • Porozumenie zoznamu je efektívne.

záver

Zoznamy s porozumením sa používajú na vytváranie zoznamov z iteračného procesu. Zrozumiteľnosť zoznamu je ľahko pochopiteľná / implementovateľná a robí kód elegantným. Porozumenie zoznamu je kompaktné a ľahko použiteľné.

Diskutovali sme o syntaxi pre porozumenie zoznamu a niekoľko dobrých príkladov. Nakoniec sme napísali jeden program, aby sme načasovali jednotlivé metódy. Dospeli sme k záveru, že LC je 2, 85-krát rýchlejšia ako v prípade slučky a 1, 87-krát rýchlejšia ako metóda map ().

Odporúčané články

Toto je sprievodca porozumením zoznamu Python. Tu diskutujeme výhody porozumenia zoznamu pythonov spolu so syntaxou a príkladmi s rôznymi podmienkami. Viac informácií nájdete aj v nasledujúcich článkoch

  1. Konštruktor v jazyku Java
  2. Triedenie v Jave
  3. Konštruktor v jazyku Java
  4. JCheckBox v Jave
  5. Sprievodca triedením v C # s príkladmi
  6. Funkcia triedenia v Pythone s príkladmi
  7. Slučky vo VBScript s príkladmi
  8. Príklady na implementáciu políčka Bootstrap

Kategórie: