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.