Úvod do porozumění seznamu Python

Porozumění seznamu Python je další způsob vytváření seznamů pomocí iterační operace. Funguje stejně jako smyčka, ale LC se používá speciálně pro vracení seznamů. Seznamy s porozuměním mají výrazy v závorkách, jako je vytvoření normálního seznamu, výraz se provede pro všechny prvky.

Seznamy s porozuměním jsou velmi užitečné ve vědě o datech, kde jeden seznam čtení / názvy sloupců filtru / odebrání položek ze seznamů atd. Přestože můžeme použít smyčky a funkce lambda k provedení nějaké akce, porozumění seznamu poskytuje elegantní a jednoduchý způsob, jak to reprezentovat.
Porozumění seznamu lze použít k nahrazení metod map (), redu () a filter ().
Porozumění seznamu je jako teorie teorií ze středních škol.

Příklad:

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

Vytvořme seznam s porozuměním pro výše 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ýstup:

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

Rozumění seznamu je snadno pochopitelné a implementovatelné. V zásadě jsou vytvářeny na tabulkách. Při psaní syntaxe pro porozumění seznamům je třeba zvážit tři věci.

  1. Parametr pro výstup
  2. Iterable
  3. Podmínky

Syntaxe může mít dvě z výše uvedených nebo 3 z výše uvedených jako syntaxi pro porozumění seznamu.

Syntax:

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

Příklady porozumění seznamu Python

Zde si probereme, jak používat porozumění seznamu pomocí pythonu. Uvidíme příklady jiným způsobem, jak je budeme spouštět pomocí smyčky a pak vytvoříme totéž s porozuměním seznamu.

Příklad č. 1: Hledání perfektních čtverců

Níže uvádíme příklady perfektních čtverců s různými podmínkami:

1. S pro smyčku

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

2. Použití porozumění seznamu

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

Výstup:

Příklad č. 2: Získejte pouze souhlásky z věty

Zde vezmeme jednu libovolnou větu a pokusíme se dostat souhlásky ve větě jako náš výstup.

1. Použití pro smyč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ýstup:

With For Loop: wr stdyng lst cmprhnsns

2. Použití porozumění seznamu

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ýstup:

Použití seznamu Compr: wr stdyng lst cmprhnsns

Příklad č. 3: Vytvoření slovníku ze dvou na rozdíl od seznamů

Níže uvádíme příklady slovníku s různými podmínkami:

1. Použití pro smyč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ýstup:

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

2. Použití porozumění seznamu

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ýstup:

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

Výhody porozumění seznamu Python

Seznam porozumění plní stejný úkol, ale jiným způsobem!

Porozumění seznamu má oproti smyčce a jiným metodám mnoho výhod. Některé z výhod jsou následující:

  1. Seznam porozumění je snadno pochopitelný a činí kód elegantním. Můžeme napsat program s jednoduchými výrazy.
  2. Porozumění seznamu je mnohem rychlejší než u smyčky a dalších metod, jako je mapa. (Totéž je vysvětleno v níže uvedeném příkladu:

Vezmeme příklad 1 pro informaci a spočítáme čas potřebný pro provedení stejné funkce různými metodami. Nejprve uvidíme čas, který zabral „pro smyčku“, potom čas pomocí metody map () a nakonec uvidíme čas, který zabere porozumění seznamu.

Tabulka ukazuje čas potřebný pro různé techniky.

1. Pro smyčku

Příklad použití pro smyčku uvedenou níže:

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. Metoda mapy

Příklad pomocí níže uvedené metody mapy:

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. Seznam porozumění

Příklad s použitím níže uvedeného porozumění seznamu:

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ýstup:

MetodaČas
Pro smyčku787 ns
Metoda Map ()518 ns
Seznam porozumění276 ns

Jasně běh porozumění seznamu je 2, 85krát rychlejší než u smyčky a 1, 87krát rychlejší než metoda mapy. Seznam s porozuměním zanechává jiné metody s velkým rozpětím. Mohlo by dojít ke spekulacím, proč nepoužíváme LC na všech místech a ne na smyčkách? LC je ve většině případů rychlejší a v téměř 80% případů může nahradit smyčky. Ale nemůžeme nahradit smyčky, v některých případech máme několik dobrých podmínek a třídy jsou vnořeny do smyčky. V těchto případech může být použití LC docela těžkopádné a také ne proveditelné. V takových situacích je lepší hledat smyčky. Ačkoli jeden může použít Seznam s porozuměním pro smyčky nahradit jiné za smyčky. Zkracuje dobu provádění a také udržuje uživatelskou přívětivost kódu.

  • Při porozumění seznamu můžeme vnořit více podmínek.
  • LC může provádět vícenásobnou manipulaci s proměnnými.
  • K získání výstupu není třeba poskytovat samostatný příkaz.
  • Srozumitelnost seznamu snižuje složitost kódu.
  • Seznam Porozumění je efektivní.

Závěr

Srozumění seznamů se používá pro vytváření seznamů z iteračního procesu. Seznamy s porozuměním jsou snadno pochopitelné / implementovatelné a činí kód elegantním. Porozumění seznamu je kompaktní a uživatelsky přívětivé.

Diskutovali jsme o syntaxi pro porozumění seznamu a několik dobrých příkladů. Nakonec jsme napsali jeden program, abychom získali časování od každé metody. Došli jsme k závěru, že LC je 2, 85krát rychlejší než u smyčky a 1, 87krát rychlejší než metoda map ().

Doporučené články

Toto je průvodce porozuměním seznamu Python. Zde diskutujeme výhody porozumění seznamu pythonů spolu se syntaxí a příklady s různými podmínkami. Další informace naleznete také v následujících článcích

  1. Konstruktor v Javě
  2. Třídění v Javě
  3. Konstruktor v Javě
  4. JCheckBox v Javě
  5. Průvodce tříděním v C # s příklady
  6. Funkce třídění v Pythonu s příklady
  7. Smyčky ve VBScript s příklady
  8. Příklady implementace zaškrtávacího políčka v Bootstrapu

Kategorie: