Sissejuhatus Pythoni nimekirja mõistmisse

Pythoni loendi mõistmine on veel üks viis loendite koostamiseks iteratsioonioperatsiooni abil. See töötab samamoodi nagu silmus töötab, kuid LC-d kasutatakse spetsiaalselt loendite tagastamiseks. Loendite mõistmisel on sulgudes olevad avaldised nagu tavalise loendi loomiseks, see avaldus rakendub kõigi elementide jaoks.

Loenditest arusaamised on väga kasulikud infoteaduses, kus loendeid loetakse / veergude nimesid filtritakse / üksustest loenditest eemaldatakse jne. Ehkki mõne toimingu tegemiseks võime kasutada silmuseid ja lambdafunktsioone, pakub loenditest arusaamine elegantset ja lihtsat viisi sama moodustamiseks.
Loendist arusaamist saab kasutada kaardi (), vähendamise () ja filtreerimise () meetodite asendamiseks.
Loenditest arusaamine on nagu keskkooli tundide teooria.

Näide:

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

Loome eelnimetatud kahe väite jaoks loendi mõistmise.

(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äljund:

(16, 17, 18, 19) ('a', 'a', 'i', 'e', ​​'e')

Loendist arusaamist on lihtne mõista ja rakendada. Põhimõtteliselt luuakse need tabelitele. Loendite mõistmise süntaksi kirjutamisel tuleb arvestada kolme asjaga.

  1. Väljundi parameeter
  2. Kordatav
  3. Tingimused

Süntaksil võib olla loendi mõistmise süntaksina kaks ülaltoodut või 3 ülaltoodut.

Süntaks:

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

Näited Pythoni loendi mõistmisest

Siin arutleme, kuidas kasutada loetelu mõistmist pythoni abil. Näeme näiteid teistmoodi, kui käivitame selle silmuse jaoks ja siis loome need loendi mõistmise abil.

Näide # 1: täiuslike ruutude leidmine

Allpool on toodud näited erinevate tingimustega täiuslikest ruutudest:

1. Loop jaoks

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

2. Loendimõistmiste kasutamine

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

Väljund:

Näide 2: hankige lausest ainult kaashäälikud

Võtame siin ühe suvalise lause ja proovime saada väljundina kaashäälikud lauses.

1. Kasutades For Loop

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äljund:

With For Loop: wr stdyng lst cmprhnsns

2. Loendi mõistmise kasutamine

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äljund:

List Compr'i kasutamine: wr stdyng lst cmprhnsns

Näide 3: sõnastiku loomine kahest erinevalt loenditest

Siin on näited allpool toodud erinevate tingimustega sõnastikust:

1. Kasutades For Loop

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äljund:

FOR-silmuse tulemus: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')

2. Loendi mõistmise kasutamine

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äljund:

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

Pythoni loendi mõistmise eelised

Loendite mõistmine täidab sama ülesannet, kuid teistmoodi!

Loendi mõistmisel on silmuse ja muude meetodite ees palju eeliseid. Mõned eelised on järgmised:

  1. Loendimõistmised on hõlpsasti mõistetavad ja muudavad koodi elegantseks. Saame programmi kirjutada lihtsate väljenditega.
  2. Loenditest arusaamine on palju kiirem kui silmuse ja muude meetodite, näiteks kaardi korral. (Sama on selgitatud allpool toodud näites:

Võtame näite 1 viite jaoks ja arvutame sama meetodi täitmiseks erinevate meetodite abil kulunud aja. Esiteks näeme aega, mille jaoks on vaja „silmust”, ja siis võetakse see kaart () meetodil ja lõpuks näeme aega, mis kulub nimekirja mõistmiseks.

Tabelis on näidatud erinevate tehnikate kulutatud aeg.

1. Loopi jaoks

Allpool toodud silmuse kasutamise näide:

Kood:

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. Kaardimeetod

Näide allpool esitatud kaardimeetodi kohta:

Kood:

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

3. Loetlege arusaamad

Näide, kasutades allpool toodud loetelu mõistmist:

Kood:

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

Väljund:

MeetodAeg
Silmuse jaoks787 ns
Kaardi () meetod518 ns
Loetlege arusaamad276 ns

Loendi mõistmise käitamisaeg on selgelt 2, 85 korda kiirem kui silmuse jaoks ja 1, 87 korda kiirem kui kaardimeetodil. Loendite mõistmine jätab muud meetodid suure varuga maha. Siis võiks spekuleerida, miks me ei kasuta LC-d lihtsalt kõikides kohtades ja mitte silmuseid? LC on enamikul juhtudel kiirem ja peaaegu 80% juhtudest suudab see silmuseid asendada. Kuid me ei saa silmuseid asendada, mõnel juhul on meil mitu tingimust ja klassid on pesas. Nendel juhtudel võib LC kasutamine olla üsna tülikas ja ka mitte teostatav. Sellistes olukordades on parem minna silmuseid otsima. Ehkki silmuste jaoks saab loendist arusaamist kasutada, asendades teise silmustega. See vähendab käivitusaega ja säilitab koodi kasutajasõbralikkuse.

  • Saame pesastada mitut tingimust loetelu mõistmisse.
  • LC suudab teostada mitu muutujaga manipuleerimist.
  • Väljundi saamiseks pole vaja eraldi käsku anda.
  • Loenditest arusaamine vähendab koodi keerukust.
  • Loendi mõistmine on tõhus.

Järeldus

Loendite koostamisel iteratiivsest protsessist kasutatakse loendite mõistmist. Loenditest arusaamist on lihtne mõista / rakendada ja see muudab koodi elegantseks. Loendist arusaamine on kompaktne ja kasutajasõbralik.

Oleme arutanud loendi mõistmise süntaksi koos heade inspireerivate näidetega. Lõpuks kirjutasime ühe programmi, et saada iga meetodi ajastus. Tegime järelduse, et LC on 2, 85 korda kiirem kui silmuse jaoks ja 1, 87 korda kiirem kui kaardi () meetod.

Soovitatavad artiklid

See on Pythoni nimekirja mõistmise juhend. Siin käsitleme python-loendi mõistmise eeliseid koos süntaksiga ja erinevate tingimustega näiteid. Lisateabe saamiseks võite vaadata ka järgmisi artikleid -

  1. Konstruktor Java
  2. Sorteerimine Java-s
  3. Konstruktor Java
  4. JCheckBox Java-s
  5. C # -s sortimise juhend näidetega
  6. Näite abil sortimisfunktsioon Pythonis
  7. Silmused VBScriptis näidetega
  8. Näited ruutu Bootstrap rakendamiseks

Kategooria: