Bevezetés a Python-lista megértésébe
A Python Lista megértése egy másik módszer a listák iterációs művelettel történő létrehozására. Ugyanúgy működik, mint a hurok, de az LC kifejezetten a listák visszatérítésére szolgál. A listamegértéseknek vannak kifejezései zárójelben, például egy normál lista létrehozásakor, a kifejezés az összes elemre végrehajtódik.
A listamegértések nagyon hasznosak az adattudományban, amikor egy listát olvasnak / oszlopneveket szűrnek / elemeket távolítanak el a listákból stb. Noha hurkokat és lambda funkciókat is használhatunk valamilyen művelet végrehajtására, a listamegértés elegáns és egyszerű módot kínál ugyanazok ábrázolására.
A listamegértések felhasználhatók a térkép (), a redukció () és a szűrés () módszerek helyettesítésére.
A lista megértése olyan, mint a Set Theory a középiskolás órákon.
Példa:
( x: x is a natural number greater than 15 )
( x: x is a vowel in word 'Data Science', x is a vowel )
Hozzuk létre a listamegértést a fenti két állításhoz.
(x for x in range(0, 20) if x>15) (x for x in 'Data Science' if x in ('a', 'e', 'i', 'o', 'u'))
Kimenet:
(16, 17, 18, 19) ('a', 'a', 'i', 'e', 'e')A listamegértés könnyen érthető és megvalósítható. Alapvetően ezeket táblákon hozzák létre. Három szempontot kell figyelembe venni, amikor a szintaxist írjuk a listák áttekintésére.
- A kimenet paramétere
- Megismételhető
- Körülmények
A szintaxisnak a fentiek közül kettő vagy a fentiek közül három lehet szintaxis a lista megértése érdekében.
Szintaxis:
(output parameter | The Iterable)
(output Parameter | The Iterable | Condition )
Példák a Python-lista megértésére
Itt megvitatjuk, hogyan lehet a lista megértését python segítségével használni. A példákat másképp fogjuk látni, mivel a hurokhoz fogjuk futtatni, majd a listamegértések felhasználásával készítjük el ezeket.
1. példa: A tökéletes négyzetek megtalálása
Íme néhány példa a tökéletes négyzetekre, különböző feltételek mellett, alább:
1. A hurokhoz
for i in range(1, 30):
if int(i**0.5)==i**0.5:
print(i)
2. A listáttekintések használata
(x for x in range(1, 30) if int(x**0.5)==x**0.5)
Kimenet:
2. példa: Csak mássalhangzókat szerezhet a mondatból
Itt egy önkényes mondatot fogunk venni, és megpróbáljuk kimenetelünkként a mássalhangzókat szerezni a mondatban.
1. A For Loop használata
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))
Kimenet:
A For Loop használatával: wrd stdyng lst cmprhnsns
2. A Lista-megértés használata
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))
Kimenet:
A List Compr használata: wr stdyng lst cmprhnsns
3. példa: Szótár létrehozása kettőből, a listáktól eltérően
Íme néhány példa a különféle feltételekkel ellátott szótárra:
1. A For Loop használata
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)))
Kimenet:
FOR-hurok eredménye: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')
2. A Lista-megértés használata
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)))
Kimenet:
LC eredmény: ('RDB': 'Aamire', 'Wanted': 'Salman', 'DDLG': 'SRK', 'Sholay': 'Amitabh', 'War': 'Hritik')
A Python lista megértésének előnyei
A listamegértések ugyanazt a feladatot hajtják végre, de másképp!
A listamegértésnek számos előnye van a hurok és más módszerekkel szemben. Néhány előnye a következő:
- A listaértések könnyen érthetők, és elegánssá teszik a kódot. A programot egyszerű kifejezésekkel tudjuk írni.
- A listamegértés sokkal gyorsabb, mint a hurok és más módszerek, például egy térkép esetén. (Ugyanezt magyarázzuk az alábbi példában:
Az 1. példát vesszük referenciaként, és kiszámoljuk az időt, amelyet különféle módszerekkel igényelnek ugyanazon funkció végrehajtásához. Először meglátjuk a „hurok” elvégzéséhez szükséges időt, majd a térkép () módszerrel vesszük az időt, és végre látjuk a listamegértés által igénybe vett időt.
Egy táblázat mutatja a különböző technikák által igényelt időt.
1. A hurok számára
Példa az alább megadott hurok használatára:
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. Térkép módszer
Példa az alább megadott térképezési módszerre:
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. Sorolja fel a megértéseket
Példa az alább megadott listamegértés felhasználásával:
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))
Kimenet:
Eljárás | Idő |
Hurokhoz | 787 ns |
Térkép () módszer | 518 ns |
Lista felfogások | 276 ns |
Világos, hogy a Lista megértésének futási ideje 2, 85-szer gyorsabb, mint a hurok esetében, és 1, 87-szer gyorsabb, mint a térkép módszer. A listamegértés más módszereket nagy mozgástérrel hagy maga után. Spekuláció történhet, akkor miért nem használjuk az LC-t mindenhol, és nem hurkokat? Az LC az esetek többségében gyorsabb, és csaknem 80% -ban helyettesíti a hurkokat. De nem cserélhetjük ki a hurkokat, van néhány eset, ahol jó néhány feltétel van, és az osztályok egymásba vannak ágyazva. Ezekben az esetekben az LC használata meglehetősen nehézkes lehet, és nem is megvalósítható. Ilyen helyzetekben jobb, ha hurkok vesznek részt. Bár a Lista érthetőséget a hurkok helyett használhatja, a másik helyett a hurkok helyett. Ez csökkenti a végrehajtási időt, és megőrzi a kód felhasználóbarát jellegét.
- Több feltételt beágyazhatunk a lista áttekintésében.
- Az LC többszörös változó manipulációt is végrehajthat.
- Nincs szükség külön parancs megadására a kimenet eléréséhez.
- A listamegértések csökkentik a kód bonyolultságát.
- A listamegértés hatékony.
Következtetés
A listamegértések a listák iteratív folyamatból történő létrehozására szolgálnak. A listamegértés könnyen érthető / megvalósítható, és elegánsvá teszi a kódot. A listamegértés kompakt és felhasználóbarát.
Megvitattuk a listamegértés szintaxisát, néhány jó áttekinthető példával együtt. Végül egy programot írtunk, hogy megkapjuk az egyes módszerek időzítését. Megállapítottuk, hogy az LC 2, 85-szor gyorsabb, mint a hurok, és 1, 87-szer gyorsabb, mint a térkép () módszer.
Ajánlott cikkek
Ez egy útmutató a Python listájának megértéséhez. Itt tárgyaljuk a python-lista megértésének előnyeit, valamint a szintaxist és a példákat különböző körülmények között. A következő cikkeket is megnézheti további információkért -
- Kivitelező Java-ban
- Rendezés Java-ban
- Kivitelező Java-ban
- JCheckBox Java-ban
- Útmutató a C # szerinti rendezéshez, példákkal
- Rendezési funkció Python-ban példákkal
- Hurkok a VBScript-ben példákkal
- Példák a jelölőnégyzet bevezetésére a Bootstrap alkalmazásban