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.

  1. Parameter za izhod
  2. Znotraj
  3. 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:

  1. Razumevanje seznama je enostavno razumeti in kodo narediti elegantno. Program lahko napišemo s preprostimi izrazi.
  2. 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 zanko787 ns
Metoda Map ()518 ns
Seznam Razumevanja276 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 -

  1. Konstruktor v Javi
  2. Razvrščanje v Javi
  3. Konstruktor v Javi
  4. JCheckBox v Javi
  5. Vodnik za razvrščanje v C # s primeri
  6. Funkcija razvrščanja v Pythonu s primeri
  7. Zanke v VBScript s primeri
  8. Primeri za uveljavitev potrditvenega polja v začetnem okolju