Uvod v razumevanje seznama Python
Razumevanje seznama Python je še en način ustvarjanja seznamov s pomočjo ponovitve. Deluje tako, kot deluje zanka, vendar se LC uporablja posebej za vrnitev seznamov. Razumevanja seznama imajo izraze znotraj oklepajev, kot je ustvarjanje običajnega seznama, izraz se bo izvajal za vse elemente.
Razumevanje seznamov je zelo uporabno pri podatkih o podatkih, kjer en bralni seznam / imena stolpcev filtrov / odstranjevanje elementov s seznamov itd. Čeprav lahko za izvedbo nekaterih dejanj uporabimo zanke in lambda funkcije, razumevanje seznama ponuja eleganten in preprost način za predstavljanje istega.
Razumevanje seznama lahko uporabite za nadomestitev metod map (), reduciranje () in filter ().
Razumevanje seznamov je kot nastavitev teorije iz razredov srednje šole.
Primer:
( x: x is a natural number greater than 15 )
( x: x is a vowel in word 'Data Science', x is a vowel )
Ustvarimo seznama razumevanja za zgornji dve trditvi.
(x for x in range(0, 20) if x>15) (x for x in 'Data Science' if x in ('a', 'e', 'i', 'o', 'u'))
Izhod:
(16, 17, 18, 19) ('a', 'a', 'i', 'e', 'e')Razumevanja seznama je enostavno razumeti in izvajati. V osnovi so te ustvarjene na mizah. Med pisanjem skladnje za sezname razumevanja je treba upoštevati tri stvari.
- Parameter za izhod
- Znotraj
- Pogoji
Sintaksa ima lahko dva od zgoraj naštetih ali 3 zgornjih besed kot sintakso za razumevanje seznama.
Sintaksa:
(output parameter | The Iterable)
(output Parameter | The Iterable | Condition )
Primeri razumevanja seznama Python
Tu bomo razpravljali o tem, kako uporabiti razumevanje seznama s pomočjo pythona. Primere bomo videli na drugačen način, kot ga bomo izvajali s pomočjo zanke in potem bomo ustvarili enake s seznamilimi spoznanji.
Primer # 1: Iskanje popolnih kvadratov
Spodaj so primeri popolnih kvadratov z različnimi pogoji:
1. Z za zanko
for i in range(1, 30):
if int(i**0.5)==i**0.5:
print(i)
2. Uporaba seznamov s seznami
(x for x in range(1, 30) if int(x**0.5)==x**0.5)
Izhod:
Primer # 2: Dobite samo soglasnike iz stavka
Tu bomo vzeli en poljuben stavek in poskušali dobiti soglasnike v stavku kot naš izhod.
1. Uporaba za zanko
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))
Izhod:
With For Loop: wr stdyng lst cmprhnsns
2. Uporaba seznama za razumevanje
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))
Izhod:
Uporaba seznama Compr: wr stdyng lst cmprhnsns
Primer # 3: Ustvarjanje slovarja iz dveh, za razliko od seznamov
Spodaj so primeri slovarja z različnimi pogoji:
1. Uporaba za zanko
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)))
Izhod:
Rezultat v zanki: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')
2. Uporaba seznama za razumevanje
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)))
Izhod:
Rezultat LC: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')
Prednosti razumevanja seznama Python
Razumevanje seznama opravlja isto nalogo, vendar na drugačen način!
Razumevanje seznama ima številne prednosti pred zanko in drugimi metodami. Nekatere prednosti so naslednje:
- Razumevanje seznama je enostavno razumeti in kodo narediti elegantno. Program lahko napišemo s preprostimi izrazi.
- Razumevanje seznamov je veliko hitrejše kot pri zanki in drugih metodah, kot je zemljevid. (Enako je razloženo v spodnjem primeru:
Za referenco bomo vzeli primer 1 in izračunali čas, potreben z različnimi metodami za izvajanje iste funkcije. Najprej bomo videli čas, ki ga je vzel "za zanko", nato pa si čas vzamemo z metodo map () in nazadnje bomo videli čas, ki ga je zaznalo seznam.
Tabela prikazuje čas trajanja različnih tehnik.
1. Za zanko
Primer uporabe zanke, ki je navedena spodaj:
Koda:
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 zemljevida
Primer s spodnjo metodo zemljevida:
Koda:
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 seznamov
Primer uporabe spodaj navedenega seznama:
Koda:
def perf_square_lc(x):
return (i**0.5 == i**0.5 for i in x) %timeit perf_square_lc(range(1, 30))
Izhod:
Metoda | Čas |
Za zanko | 787 ns |
Metoda Map () | 518 ns |
Seznam Razumevanja | 276 ns |
Jasno, čas izvajanja razumevanja seznama je 2, 85 krat hitrejši kot za zanko in 1, 87 krat hitrejši od metode zemljevida. Razumevanja seznama za seboj puščajo druge metode z veliko mero. Potem bi se lahko špekulirale, zakaj na vseh mestih preprosto ne uporabimo LC in ne zank? LC je v večini primerov hitrejši in lahko zamenja zanke v skoraj 80% primerov. Ampak ne moremo nadomestiti zank, v nekaterih primerih imamo nekaj lepih pogojev in razredi so ugnezdeni v zanko. V teh primerih je uporaba LC lahko zelo okorna in tudi izvedljiva. V takih situacijah je bolje iti za zanke. Čeprav lahko uporabnik Liste razume kot zanke, da nadomesti druge zanke. Zmanjšalo bo čas izvedbe in ohranilo prijaznost uporabnika kode.
- V seznamu seznama lahko gnezdimo več pogojev.
- LC lahko izvaja več manipulacij s spremenljivko.
- Za pridobitev rezultata ni treba zagotoviti ločenega ukaza.
- Razumevanje seznamov zmanjšuje zapletenost kode.
- Razumevanje seznama je učinkovito.
Zaključek
Razumevanje seznamov se uporablja za ustvarjanje seznamov iz iterativnega postopka. Razumevanje seznama je enostavno razumeti / izvajati in naredi kodo elegantno. Seznam seznamov je kompakten in uporabniku prijazen.
Razumeli smo skladnjo za razumevanje seznama skupaj z nekaj dobrimi vpoglednimi primeri. Končno smo napisali en program, s katerim smo dobili čas od vsake metode. Ugotovili smo, da je LC 2, 85-krat hitrejši kot za zanko in 1, 87-krat hitrejši od metode map ().
Priporočeni članki
To je vodnik za razumevanje seznama Python. Tukaj razpravljamo o prednostih razumevanja seznama python skupaj s skladnjo in primeri z različnimi pogoji. Če želite izvedeti več, si oglejte tudi naslednje članke -
- Konstruktor v Javi
- Razvrščanje v Javi
- Konstruktor v Javi
- JCheckBox v Javi
- Vodnik za razvrščanje v C # s primeri
- Funkcija razvrščanja v Pythonu s primeri
- Zanke v VBScript s primeri
- Primeri za uveljavitev potrditvenega polja v začetnem okolju