Luettelon ymmärrykset Pythonissa

List Comprehensions Python



Luettelon ymmärtämistä käytetään usein Pythonissa yksirivisten lausekkeiden kirjoittamiseen, jotka luovat uuden luettelon tai sanakirjan silmukoimalla toistettavan objektin. Tässä artikkelissa kerrotaan, miten luettelon ymmärtämistä käytetään Pythonissa, alkaen perustavanlaatuisesta selityksestä silmukoiden toiminnasta Pythonissa.

Loop Pythonissa

A for loop -lauseke Pythonissa iteroi peräkkäin minkä tahansa objektin, luettelon, merkkijonon jne. Jäsenten päälle. Verrattuna muihin ohjelmointikieliin sen syntaksi on paljon puhtaampi eikä vaadi iteraatiovaiheiden manuaalista määrittämistä ja iteraation aloittamista. Vaikka on olemassa tapoja tehdä sen käyttäytymisestä sama kuin muut ohjelmointikielet (ei käsitellä tätä artikkelia). Voit myös hallita silmukoita jonkin verran käyttämällä lausuntoja, kuten jatka, tauko, kulku jne. Alla on yksinkertainen esimerkki silmukasta Pythonissa:







vartenxsisään valikoima(10):
Tulosta(x)

Yllä oleva silmukka tulostaa kymmenen numeroa, jotka alkavat nollasta ja päättyvät yhdeksään.



Luettelon ymmärrykset

Luettelon ymmärtäminen on vain lyhyt / ytimekäs tapa kirjoittaa monirivisiä silmukoita yhden rivin lausekkeeseen. Alla oleva esimerkki luettelon ymmärtämisestä luo uuden luettelon muodossa [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] sisällyttämällä siihen kaikki x: n arvot.



numeroita= [xvartenxsisään valikoima(10)]
Tulosta (numeroita)

Huomaa, että luettelon ymmärtäminen luo aina uuden luettelon eikä muuta lausekkeessa käytettyjä alkuperäisiä iterabelleja. Tyypillisessä luettelon ymmärtämislausekkeessa on oltava lauseke ja sen jälkeen voi seurata ehdollisia lausekkeita if ja else. Ilman luettelon ymmärtämistä yllä oleva esimerkki kirjoitetaan seuraavasti:





numeroita= []
vartenxsisään valikoima(10):
numeroita.liittää(x)

Tulosta (numeroita)

Suorituskyky ja luettavuus

Luettelon ymmärtäminen on nopeampaa kuin silmukoiden. Kuitenkin, ellet iteroi yli satoja tuhansia kohteita, et huomaa suuria suorituskyvyn parannuksia. Vaikka luettelon ymmärtäminen tarjoaa ytimekkään tavan kirjoittaa silmukoille, monimutkaiset lausekkeet voivat johtaa koodin heikkoon luettavuuteen ja lisäämään monisanaisuutta. On tärkeää pitää koodi luettavana, ellei parhaan suorituskyvyn saavuttaminen ole ehdottoman välttämätöntä ohjelmalle.

Esimerkki: Luettelon ymmärtämisen syntaksin käyttäminen sanakirjojen ja joukkojen kanssa

Python-sanakirja on kokoelma elementtejä, jotka on määritelty avain-arvo-pareissa, kun taas joukko on kokoelma ainutlaatuisia arvoja, joissa kaksoiskappaleet eivät ole sallittuja. Luettelon ymmärtämistä voidaan käyttää myös Python -sanakirjojen ja -joukkojen kanssa. Syntaksi eroaa hieman, sen sijaan, että käärittäisit lausekkeen neliösulkeisiin, sinun on nyt käytettävä kiharaa. Saat myös uuden sanakirjan / joukko -objektin uuden luettelon sijaan.



tiedot= {'kaupunki':'New York', 'nimi':'john doe'}

formatted_data= {k: v.otsikko() vartenkohteeseen,vsisääntiedot.kohteita()}

Tulosta (formatted_data)

Yllä oleva esimerkki muuntaa merkkijonojen arvot otsikkokirjaimiksi ja luo uuden sanakirjan nimeltä formatted_data, jonka tulos on: {‘city’: ‘New York’, ‘name’: ‘John ​​Doe’}. Voit myös muuttaa sanakirjaa / asetusta paikan päällä määrittämällä vasemmanpuoleisen sanakirjamuuttujan.

tiedot= {'kaupunki':'New York', 'nimi':'john doe'}

tiedot= {k: v.otsikko() vartenkohteeseen,vsisääntiedot.kohteita()}

Tulosta (tiedot)

Ilman sanakirjojen ymmärtämistä koodi näyttäisi tältä:

tiedot= {'kaupunki':'New York', 'nimi':'john doe'}

formatted_data= {}

vartenkohteeseen,vsisääntiedot.kohteita():
formatted_data[kohteeseen] =v.otsikko()

Tulosta (formatted_data)

Koska joukkoissa ei ole avain-arvo-pareja, joukon ymmärtäminen voidaan määritellä samalla tavalla kuin luettelon ymmärtäminen. Ainoa ero on kiharahousujen käyttö.

Esimerkki: Useita silmukoita luettelon ymmärtämisessä

Edellä mainittu luettelon ymmärtämisen esimerkki on perus ja käyttää yhtä lausetta. Alla on esimerkki, joka käyttää useita silmukoita ja ehdollisen if -lauseen.

adjektiivit= ['Levy', 'Eoan', 'Focal', 'Ovela']

eläimet= ['Dingo', 'Kärppä', 'Kuoppa', 'Majava']

koodinimet= [x +''+ javartenxsisäänadjektiivitvartenjasisääneläimetjosja.alusta alkaen(x[0])]

Tulosta (koodinimet)

Koodissa näytetään [’Disco Dingo’, ’Eoan Ermine’, ’Focal Fossa’]. Silmukoiden kaksi käyvät läpi adjektiivit ja eläinluettelot ja niiden jäsenet yhdistetään välilyönnillä vain, jos molempien sanojen ensimmäinen kirjain on sama. Ilman luettelon ymmärtämistä koodi näyttäisi tältä:

adjektiivit= ['Levy', 'Eoan', 'Focal', 'Ovela']
eläimet= ['Dingo', 'Kärppä', 'Kuoppa', 'Majava']

koodinimet= []

vartenxsisäänadjektiivit:
vartenjasisääneläimet:
josja.alusta alkaen(x[0]):
koodinimet.liittää(x +''+ ja)

Tulosta (koodinimet)

Esimerkki: Luettelon ymmärtäminen if-else -lausekkeella

Alla oleva esimerkki näyttää if- ja else -lauseiden käytön luettelon ymmärryksissä.

numero_lista= [1, 2, 3, 4]
other_list= [5, 6, 7, 8]

tulos= [Totta jos (x + y)%2 == 0 muu Väärä vartenxsisäännumero_listavartenjasisäänother_list]

Tulosta (tulos)

Kun selaat kahta luetteloa, yllä oleva luettelon ymmärtäminen tarkistaa, onko elementtiparin summa parillinen vai ei. Yllä olevan koodin suorittaminen näyttää [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True] tulosteena. Ilman luettelon ymmärtämistä koodi näyttäisi tältä:

numero_lista= [1, 2, 3, 4]
other_list= [5, 6, 7, 8]
tulos= []

vartenxsisäännumero_lista:
vartenjasisäänother_list:
jos (x + y)%2 == 0:
tulos.liittää(Totta)
muu:
tulos.liittää(Väärä)

Tulosta (tulos)

Johtopäätös

Luettelon ymmärtäminen on mukava tapa kirjoittaa puhtaita ja ytimekkäitä silmukkalausekkeita. Ne voivat kuitenkin muuttua nopeasti monimutkaisiksi ja vaikeiksi ymmärtää, jos käytetään useita silmukoita ja ehdollisia lausekkeita. Lopulta kyse on ohjelmoijan mukavuustasosta, mutta yleensä on hyvä kirjoittaa selkeä, luettava ja helppo virheenkorjauskoodi liiallisen pikakirjoituksen käyttämisen sijaan.