A hurokhoz a Pythonban
A for ciklus utasítás a Python-ban szekvenciálisan ismétli bármely objektum, lista, karakterlánc stb. Tagjait. A többi programozási nyelvhez képest a szintaxisa sokkal tisztább, és nem igényli az iterációs lépések kézi meghatározását és az iteráció elindítását. Bár van mód arra, hogy a viselkedését a többi programozási nyelvhez hasonlóvá tegye (ez a cikk nem foglalkozik ezzel). A ciklusok felett is gyakorolhat bizonyos ellenőrzést olyan utasítások használatával, mint a folytatás, törés, átadás stb. Az alábbiakban bemutatunk egy egyszerű példát a Python ciklusára:
x-hez a tartományban (10):nyomtatás (x)
A fenti for ciklus tíz számot fog kinyomtatni 0-tól kezdve 9-ig.
Sorolja fel a megértéseket
A lista megértése nem más, mint egy rövid / tömör módszer, hogy többsorosat írjon a hurkokhoz egy egyvonalas utasításban. Az alábbi listamegértési példa új listát hoz létre [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] néven az „x” összes értékének belefoglalásával.
számok = [x x-hez a tartományban (10)]nyomtatás (számok)
Vegye figyelembe, hogy a listamegértés mindig új listát hoz létre, és nem módosítja a kifejezésben használt eredeti iterable-eket. Egy tipikus listamegértési kifejezésnek rendelkeznie kell „for” záradékkal, amelyet „if” és „else” feltételes mondatok követhetnek. A felsorolás megértése nélkül a fenti példát a következő módon írjuk:
számok []x-hez a tartományban (10):
számok.függelék (x)
nyomtatás (számok)
Teljesítmény és olvashatóság
A lista megértése gyorsabb, mint a hurkok esetében. Hacsak nem több százezer elemet ismételget, nem fogja észrevenni a teljesítmény jelentős javulását. Míg a listamegértés tömör módot kínál a ciklusok írására, az összetett kifejezések a kód rossz olvashatóságához és megnövekedett szóhasználathoz vezethetnek. Fontos, hogy a kód olvasható legyen, hacsak a maximális teljesítmény elérése nem feltétlenül szükséges a programhoz.
Példa: A listamegértések szintaxisának használata szótárakkal és halmazokkal
A python szótár kulcs-érték párokban definiált elemek gyűjteménye, míg a halmaz egyedi értékek gyűjteménye, ahol a duplikátumok nem engedélyezettek. A lista megértése használható a Python szótárakkal és halmazokkal is. A szintaxis kissé eltér, ahelyett, hogy a kifejezést szögletes zárójelbe csomagolná, most göndör zárójeleket kell használnia. Új lista helyett új szótárat / beállított objektumot is kap.
data = "city": "new york", "name": "john doe"formatted_data = k: v.cím () k, v adatokhoz.elemek ()
nyomtatás (formatted_data)
A fenti példa konvertálja a karakterláncokat kis- és nagybetűvé, és létrehoz egy új szótárt „formatted_data” néven, amelynek kimenete a következő lesz: 'city': 'New York', 'name': 'John Doe'. Megváltoztathatja a szótárt / beállíthatja a helyén is, ha megadja a meglévő szótárváltozót a bal oldalon.
data = "city": "new york", "name": "john doe"adatok = k: v.cím () k, v adatokhoz.elemek ()
nyomtatás (adatok)
A szótár-megértések használata nélkül a kód így néz ki:
data = "city": "new york", "name": "john doe"formatted_data =
k, v adatokra.elemek ():
formattált_adatok [k] = v.cím()
nyomtatás (formatted_data)
Mivel a halmazokban nincs kulcs-érték pár, a halmaz megértése ugyanúgy definiálható, mint a lista megértése. Az egyetlen különbség a göndör zárójelek használata.
Példa: Többszörös a hurok számára egy listamegértésben
A fent említett lista megértési példa alapvető, és egyetlen „for” állítást használ. Az alábbiakban bemutatunk egy példát, amely többszöröset használ a ciklusokhoz és egy feltételes „ha” utasítást.
melléknevek = ["Disco", "Eoan", "Focal", "Artful"]állatok = ["Dingo", "Ermine", "Fossa", "Hód"]
kódnevek = [x + "" + y x-re állatoknál az y melléknevekben, ha y.startswith (x [0])]
nyomtatás (kódnevek)
A kód megjeleníti a ['Disco Dingo', 'Eoan Ermine', 'Focal Fossa'] kimenetet. A hurokhoz tartozó kettő a „melléknevek” és az „állatok” listákon megy keresztül, és tagjaikat szóközzel egyesítik, csak ha mindkét szó első betűje megegyezik. A listamegértések használata nélkül a kód így néz ki:
melléknevek = ["Disco", "Eoan", "Focal", "Artful"]állatok = ["Dingo", "Ermine", "Fossa", "Hód"]
kódnevek = []
x-re a melléknevekben:
y esetén állatoknál:
ha y.startswith (x [0]):
kódnevek.függelék (x + "" + y)
nyomtatás (kódnevek)
Példa: A megértés felsorolása if-else záradékkal
Az alábbi példa megmutatja az if és else utasítások használatát a listamegértésekben.
szám_lista = [1, 2, 3, 4]másik_lista = [5, 6, 7, 8]
eredmény = [Igaz, ha (x + y)% 2 == 0 más Hamis az x-nek a number_list-ben az y-hoz egy másik_ listában]
nyomtatás (eredmény)
Két lista végigvezetése közben a fenti listamegoldás ellenőrzi, hogy az elempár összege páros-e vagy sem. A fenti kód futtatása megmutatja az [Igaz, Hamis, Igaz, Hamis, Hamis, Igaz, Hamis, Igaz, Igaz, Hamis, Igaz, Hamis, Hamis, Igaz, Hamis, Igaz] kimenetet. A lista megértése nélkül a kód így néz ki:
szám_lista = [1, 2, 3, 4]másik_lista = [5, 6, 7, 8]
eredmény = []
x-hez a számlistában:
y-re egy másik_listában:
ha (x + y)% 2 == 0:
eredmény.függelék (igaz)
más:
eredmény.függelék (hamis)
nyomtatás (eredmény)
Következtetés
A felsorolás megértése jó módot kínál a tiszta és tömör ciklusos állítások megírására. Azonban gyorsan összetetté és nehezen érthetővé válhatnak, ha több ciklust és feltételes utasítást használnak. Végül a programozó kényelmi szintjéről van szó, de általában érdemes explicit, olvasható és könnyen hibakereső kódot írni, ahelyett, hogy túlzottan rövideket használnánk.