Ú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.
- Parametr pro výstup
- Iterable
- 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í:
- Seznam porozumění je snadno pochopitelný a činí kód elegantním. Můžeme napsat program s jednoduchými výrazy.
- 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čku | 787 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
- Konstruktor v Javě
- Třídění v Javě
- Konstruktor v Javě
- JCheckBox v Javě
- Průvodce tříděním v C # s příklady
- Funkce třídění v Pythonu s příklady
- Smyčky ve VBScript s příklady
- Příklady implementace zaškrtávacího políčka v Bootstrapu