Python

Listeforståelser i Python

Listeforståelser i Python
Listeforståelse brukes ofte i Python til å skrive uttalelser med en linje som oppretter en ny liste eller ordbok ved å løpe over et iterabelt objekt. Denne artikkelen vil forklare hvordan du bruker listeforståelser i Python, og starter med en grunnleggende forklaring på hvordan for sløyfer fungerer i Python.

For Loop in Python

En for loop-setning i Python gjentas sekvensielt over medlemmer av ethvert objekt, liste, streng osv. Sammenlignet med andre programmeringsspråk er syntaksen mye renere og krever ikke manuell definering av iterasjonstrinn og start av iterasjon. Selv om det er måter å gjøre oppførselen den samme som andre programmeringsspråk (vil ikke bli dekket i denne artikkelen). Du kan også utøve litt kontroll over løkker ved å bruke uttalelser som fortsett, brudd, bestått osv. Nedenfor er et enkelt eksempel på for loop i Python:

for x innen rekkevidde (10):
skriv ut (x)

For-sløyfen over vil skrive ut ti tall som starter fra 0 og slutter med 9.

Listeforståelser

Listeforståelse er ingenting annet enn en kortfattet / kortfattet måte å skrive flerlinjer for sløyfer i en uttalelse. Eksemplet på listeforståelse nedenfor vil opprette en ny liste som [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] ved å inkludere alle verdiene av “x” i den.

tall = [x for x i området (10)]
skriv ut (tall)

Merk at listeforståelse alltid oppretter en ny liste og ikke endrer originale iterables som brukes i uttrykket. Et typisk uttrykk for listeforståelse må ha en "for" -klausul og kan følges av "hvis" og "annet" betingede uttalelser. Uten å bruke en listeforståelse, vil eksemplet ovenfor skrives på følgende måte:

tall = []
for x innen rekkevidde (10):
tall.legge til (x)
skriv ut (tall)

Ytelse og lesbarhet

Listeforståelse er raskere enn for løkker. Imidlertid, med mindre du gjentar over hundretusener av ting, vil du ikke merke større ytelsesforbedringer. Mens listeforståelse gir en kortfattet måte å skrive for sløyfer, kan komplekse uttrykk føre til dårlig lesbarhet for koden og økt ordlighetsgrad. Det er viktig å holde koden lesbar, med mindre å oppnå maksimal ytelse er en absolutt nødvendighet for programmet ditt.

Eksempel: Bruk av listeforståelsessyntaks med ordbøker og sett

En pythonordbok er en samling av elementer definert i nøkkelverdipar, mens et sett er en samling av unike verdier der duplikater ikke er tillatt. Listeforståelse kan også brukes med Python-ordbøker og sett. Syntaksen skiller seg litt ut, i stedet for å pakke inn uttrykket i firkantede seler, må du nå bruke krøllete bukseseler. Du vil også få en ny ordbok / angitt objekt i stedet for en ny liste.

data = "city": "new york", "name": "john doe"
formatted_data = k: v.tittel () for k, v i data.varer ()
skriv ut (formatted_data)

Eksemplet ovenfor vil konvertere strengverdier til tittelbokstaver og opprette en ny ordbok kalt “formatted_data”, hvis utdata vil være: 'city': 'New York', 'name': 'John Doe'. Du kan også endre ordbok / sett på plass ved å spesifisere den eksisterende ordbokvariabelen på venstre side.

data = "city": "new york", "name": "john doe"
data = k: v.tittel () for k, v i data.varer ()
skriv ut (data)

Uten å bruke ordbokforståelse, vil koden se slik ut:

data = "city": "new york", "name": "john doe"
formatted_data =
for k, v i data.gjenstander ():
formatted_data [k] = v.tittel()
skriv ut (formatted_data)

Siden det ikke er noen nøkkelverdipar i sett, kan en settforståelse defineres på samme måte som en listeforståelse. Den eneste forskjellen er bruken av krøllete bukseseler.

Eksempel: Flere for løkker i en listeforståelse

Listeforståelseseksemplet nevnt ovenfor er grunnleggende og bruker en enkelt “for” -uttalelse. Nedenfor er et eksempel som bruker flere for løkker og en betinget "if" -uttalelse.

adjektiv = ["Disco", "Eoan", "Focal", "Artful"]
dyr = ["Dingo", "Ermine", "Fossa", "Beaver"]
kodenavn = [x + "" + y for x i adjektiv for y hos dyr hvis y.starter med (x [0])]
trykk (kodenavn)

Koden vil vise ['Disco Dingo', 'Eoan Ermine', 'Focal Fossa'] som utdata. De to for løkker går over "adjektiver" og "dyr" -lister, og medlemmene deres blir slått sammen med et mellomrom, bare hvis den første bokstaven i begge ordene er den samme. Uten å bruke listeforståelse, vil koden se slik ut:

adjektiver = ["Disco", "Eoan", "Focal", "Artful"]
dyr = ["Dingo", "Ermine", "Fossa", "Beaver"]
kodenavn = []
for x i adjektiv:
for y hos dyr:
hvis y.starter med (x [0]):
kodenavn.legg til (x + "" + y)
trykk (kodenavn)

Eksempel: Listeforståelse med if-else-klausul

Eksemplet nedenfor vil vise bruk av hvis og annet uttalelser i listeforståelse.

number_list = [1, 2, 3, 4]
another_list = [5, 6, 7, 8]
resultat = [True if (x + y)% 2 == 0 annet Falsk for x i nummerliste for y i en annen_liste]
skriv ut (resultat)

Mens du går gjennom to lister, kontrollerer listeforståelsen ovenfor om summen av elementparet er jevnt eller ikke. Å kjøre koden ovenfor viser deg [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True] som utdata. Uten å bruke listeforståelse, vil koden se slik ut:

number_list = [1, 2, 3, 4]
another_list = [5, 6, 7, 8]
resultat = []
for x i nummerliste:
for y i en annen_liste:
hvis (x + y)% 2 == 0:
resultat.legg til (True)
ellers:
resultat.legge til (usann)
skriv ut (resultat)

Konklusjon

Listeforståelse gir en fin måte å skrive rene og konsise løkkeuttalelser på. Imidlertid kan de raskt bli komplekse og vanskelige å forstå hvis det brukes flere sløyfer og betingede utsagn. Til slutt kommer det til komfortnivået til en programmerer, men generelt er det en god ide å skrive eksplisitt, lesbar og enkel å feilsøke kode i stedet for å bruke forkortelser.

Mus Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kartlegg museknappene på en annen måte for annen programvare med X-Mouse Button Control
Kanskje du trenger et verktøy som kan gjøre at musens kontroll endres med hvert program du bruker. Hvis dette er tilfelle, kan du prøve et program som...
Mus Microsoft Sculpt Touch Wireless Mouse Review
Microsoft Sculpt Touch Wireless Mouse Review
Jeg har nylig lest om Microsoft Sculpt Touch trådløs mus og bestemte meg for å kjøpe den. Etter å ha brukt den en stund bestemte jeg meg for å dele mi...
Mus AppyMouse Pekeplate og musepeker på skjermen for Windows-nettbrett
AppyMouse Pekeplate og musepeker på skjermen for Windows-nettbrett
Nettbrettbrukere savner ofte musepekeren, spesielt når de bruker vanlige bærbare datamaskiner. Berøringsskjermen Smarttelefoner og nettbrett har mange...