Uvod u razumijevanje popisa Pythona

Razumijevanje popisa Python-a još je jedan način stvaranja popisa pomoću operacije ponavljanja. Radi na isti način kao što radi petlja, ali LC se koristi posebno za vraćanje popisa. Shvaćanja popisa sadrže izraze unutar zagrada, poput stvaranja normalnog popisa, izraz će se izvesti za sve elemente.

Shvaćanja popisa vrlo su korisna u znanosti o podacima gdje se jedan popis za čitanje / imena stupaca filtriraju / uklanjanje stavki s popisa itd. Iako možemo koristiti petlje i lambda funkcije za izvršavanje neke akcije, razumijevanje popisa pruža elegantan i jednostavan način predstavljanja istog.
Popis razumijevanja može se upotrijebiti za zamjenu metoda map (), smanjenje () i filter ().
Shvaćanje popisa je poput Teorije postavljanja iz razreda srednje škole.

Primjer:

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

Napravimo poimanje popisa za gornja dva iskaza.

(x for x in range(0, 20) if x>15) (x for x in 'Data Science' if x in ('a', 'e', 'i', 'o', 'u'))

Izlaz:

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

Shvaćanja popisa lako je razumjeti i provesti. U osnovi se stvaraju na tablicama. Tri su stvari koje treba razmotriti prilikom pisanja sintakse za poimanja popisa.

  1. Parametar za izlaz
  2. Ponovno
  3. Uvjeti

Sintaksa može imati dva gore ili 3 gore navedena kao sintaksu za razumijevanje popisa.

Sintaksa:

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

Primjeri razumijevanja popisa Python-a

Ovdje ćemo razgovarati o tome kako koristiti razumijevanje popisa koristeći python. Primjere ćemo vidjeti na drugačiji način kao što ćemo ga izvoditi pomoću petlje, a zatim ćemo kreirati iste koristeći popisna shvaćanja.

Primjer 1: Pronalaženje savršenih kvadrata

Evo primjera savršenih kvadrata s različitim uvjetima danih u nastavku:

1. Sa za petlju

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

2. Koristeći popisna razumijevanja

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

Izlaz:

Primjer br. 2: Uzmite samo konsonante iz rečenice

Ovdje ćemo uzeti jednu proizvoljnu rečenicu i pokušat ćemo dobiti konsonante u rečenici kao naš izlaz.

1. Korištenje za petlju

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))

Izlaz:

With For Loop: wr stdyng lst cmprhnsns

2. Korištenje razumijevanja popisa

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))

Izlaz:

Korištenje popisa Compr: wr stdyng lst cmprhnsns

Primjer 3: Stvaranje rječnika iz dva, za razliku od popisa

Evo primjera rječnika s različitim uvjetima danih u nastavku:

1. Korištenje za petlju

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)))

Izlaz:

Rezultat za petlju: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')

2. Korištenje razumijevanja popisa

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)))

Izlaz:

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

Prednosti razumijevanja Python liste

Popis razumijevanja izvodi isti zadatak, ali na drugačiji način!

Popis razumijevanja ima brojne prednosti u odnosu na petlju i druge metode. Neke od prednosti su sljedeće:

  1. Popis razumijevanja popisa lako je razumjeti i kôd čine elegantnim. Program možemo napisati jednostavnim izrazima.
  2. Shvaćanja popisa mnogo su brža nego kod petlje i drugih metoda poput karte. (Isto je objašnjeno u primjeru u nastavku:

Za referencu ćemo uzeti primjer 1 i izračunat ćemo vrijeme potrebno za različite funkcije za izvršavanje iste funkcije. Prvo ćemo vidjeti vrijeme koje je uzeo "za petlju", a zatim vrijeme uzima po karti () metodi, a na kraju ćemo vidjeti i vrijeme poimanja popisa.

Tablica prikazuje vrijeme potrebno za različite tehnike.

1. Za petlju

Primjer korištenja za petlju danu u nastavku:

Kodirati:

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 karte

Primjer pomoću metode karte dane u nastavku:

Kodirati:

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

3. Navedi razumijevanja

Primjer pomoću dolje navedenog popisa:

Kodirati:

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

Izlaz:

načinVrijeme
Za petlju787 ns
Map () metoda518 ns
Popis shvaćanja276 ns

Jasno da je trajanje razumijevanja popisa 2, 85 puta brže nego za petlju i 1, 87 puta brže od metode karte. Shvaćanja popisa za sobom ostavljaju velike metode s velikom razlikom. Može se nagađati zašto onda jednostavno ne koristimo LC na svim mjestima i ne petlje? LC je brži u većini slučajeva i može zamijeniti petlje u gotovo 80% slučajeva. Ali ne možemo zamijeniti petlje, postoje neki slučajevi da imamo dobar broj uvjeta, a klase su ugniježđene u petlju. U tim bi slučajevima upotreba LC mogla biti i nezgrapna, a također i neizvodljiva. U takvim je situacijama bolje potražiti petlje. Iako se može koristiti razumijevanje popisa In za petlje da se zamijeni drugo za petlje. Umanjit će vrijeme izvršenja kao i održati prijatnost koda.

  • U razumijevanju popisa možemo ugnijezditi više uvjeta.
  • LC može izvesti više manipulacija promjenjivim.
  • Nema potrebe davati zasebnu naredbu da biste dobili izlaz.
  • Popis razumijevanja smanjuje složenost koda.
  • Razumijevanja popisa su učinkovita.

Zaključak

Shvaćanja popisa koriste se za izradu popisa iz iterativnog postupka. Shvaćanja popisa lako je razumjeti / implementirati te ih čini elegantnim. Popis razumijevanja je kompaktan i jednostavan za upotrebu.

Razmotrili smo sintaksu za razumijevanje popisa uz nekoliko dobrih uvidljivih primjera. Napokon, napisali smo jedan program kako bismo dobili vrijeme od svake metode. Zaključili smo da je LC 2, 85 puta brži nego za petlju i 1, 87 puta brži od metode map ().

Preporučeni članci

Ovo je vodič za razumijevanje Python liste. Ovdje smo raspravljali o prednostima razumijevanja popisa pytona, zajedno sa sintaksom i primjerima s različitim uvjetima. Možete pogledati i sljedeće članke da biste saznali više -

  1. Konstruktor na Javi
  2. Razvrstavanje u Javi
  3. Konstruktor na Javi
  4. JCheckBox na Javi
  5. Vodič za sortiranje u C # s primjerima
  6. Funkcija sortiranja u Python-u s primjerima
  7. Petlje u VBScript sa primjerima
  8. Primjeri za implementaciju potvrdnog okvira u sustavu Bootstrap

Kategorija: