För Loop in Python
Ett för loop-uttalande i Python itererar sekventiellt över medlemmar av alla objekt, listor, strängar etc. Jämfört med andra programmeringsspråk är dess syntax mycket renare och behöver inte manuellt definiera iterationssteg och starta iteration. Även om det finns sätt att göra dess beteende samma som andra programmeringsspråk (kommer inte att behandlas i den här artikeln). Du kan också utöva viss kontroll över slingor genom att använda uttalanden som Fortsätt, bryta, skicka osv. Nedan följer ett enkelt exempel på for loop i Python:
för x i intervallet (10):skriva ut (x)
For-loop ovan skriver ut tio nummer som börjar från 0 och slutar med 9.
Listförståelser
Listförståelse är inget annat än ett kortfattat / kortfattat sätt att skriva flera rader för slingor i ett uttalande. Listförståelseexemplet nedan skapar en ny lista som [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] genom att inkludera alla "x" -värden i den.
siffror = [x för x inom intervallet (10)]skriva ut (siffror)
Observera att listförståelse alltid skapar en ny lista och inte ändrar original iterables som används i uttrycket. Ett typiskt listförståelseuttryck måste ha en "for" -sats och kan följas av "if" och "else" villkorliga uttalanden. Utan att använda listförståelse kommer exemplet ovan att skrivas på följande sätt:
siffror = []för x i intervallet (10):
tal.bifoga (x)
skriva ut (siffror)
Prestanda och läsbarhet
Listförståelser är snabbare än för loopar. Men om du inte itererar över hundratusentals objekt kommer du inte att märka större prestandaförbättringar. Medan listförståelse ger ett kortfattat sätt att skriva för slingor kan komplexa uttryck leda till dålig läsbarhet av kod och ökad detaljnivå. Det är viktigt att hålla koden läsbar, såvida det inte är absolut nödvändigt för ditt program att uppnå maximal prestanda.
Exempel: Använda listförståelsessyntax med ordböcker och uppsättningar
En pythonordbok är en samling element definierade i nyckel-värdepar medan en uppsättning är en samling unika värden där dubbletter inte är tillåtna. Listförståelser kan också användas med Python-ordböcker och uppsättningar. Syntaxen skiljer sig något, istället för att packa in uttrycket i fyrkantiga hängslen, måste du nu använda lockiga hängslen. Du får också ett nytt ordlista / uppsättningsobjekt istället för en ny lista.
data = "city": "new york", "name": "john doe"formatted_data = k: v.titel () för k, v i data.objekt ()
skriva ut (formatted_data)
Exemplet ovan konverterar strängvärden till titelfall och skapar en ny ordbok som heter "formatted_data", vars utdata kommer att vara: 'city': 'New York', 'name': 'John Doe'. Du kan också ändra ordlistan / ställningen på plats genom att ange den befintliga ordlistavariabeln på vänster sida.
data = "city": "new york", "name": "john doe"data = k: v.titel () för k, v i data.objekt ()
skriva ut (data)
Utan att använda ordlistaförståelser skulle koden se ut så här:
data = "city": "new york", "name": "john doe"formatted_data =
för k, v i data.artiklar ():
formatted_data [k] = v.titel()
skriva ut (formatted_data)
Eftersom det inte finns några nyckel-värde-par i uppsättningar kan en uppsättningsförståelse definieras på samma sätt som en listförståelse. Den enda skillnaden är användningen av lockiga hängslen.
Exempel: Multipel för loopar i en listförståelse
Listförståelseexemplet som nämns ovan är grundläggande och använder ett enda ”för” -uttalande. Nedan följer ett exempel som använder flera för slingor och ett villkorligt "if" -uttalande.
adjektiv = ["Disco", "Eoan", "Focal", "Artful"]djur = ["Dingo", "Ermine", "Fossa", "Beaver"]
kodnamn = [x + "" + y för x i adjektiv för y hos djur om y.startar med (x [0])]
tryck (kodnamn)
Koden visar ['Disco Dingo', 'Eoan Ermine', 'Focal Fossa'] som output. De två för slingor går över "adjektiv" och "djur" -listor och deras medlemmar sammanfogas med hjälp av ett mellanslag, bara om den första bokstaven i båda orden är samma. Utan att använda listförståelser skulle koden se ut så här:
adjektiv = ["Disco", "Eoan", "Focal", "Artful"]djur = ["Dingo", "Ermine", "Fossa", "Beaver"]
kodnamn = []
för x i adjektiv:
för y hos djur:
om y.startar med (x [0]):
kodnamn.lägg till (x + "" + y)
tryck (kodnamn)
Exempel: Listförståelse med if-else-klausul
Exemplet nedan visar användningen av if och annat uttalanden i listförståelser.
number_list = [1, 2, 3, 4]another_list = [5, 6, 7, 8]
resultat = [True if (x + y)% 2 == 0 annat Falskt för x i nummerlista för y i en annan lista]
skriva ut (resultat)
När du går igenom två listor kontrollerar listförståelsen ovan om summan av elementparet är jämn eller inte. Körning av koden ovan visar dig [True, False, True, False, False, True, False, True, True, False, True, False, False, True, False, True] som utdata. Utan att använda listförståelse skulle koden se ut så här:
number_list = [1, 2, 3, 4]another_list = [5, 6, 7, 8]
resultat = []
för x i nummerlista:
för y i en annan_lista:
om (x + y)% 2 == 0:
resultat.append (True)
annan:
resultat.append (False)
skriva ut (resultat)
Slutsats
Listförståelser ger ett trevligt sätt att skriva rena och kortfattade uttalanden. De kan dock snabbt bli komplexa och svåra att förstå om flera slingor och villkorliga uttalanden används. I slutändan kommer det till en programmerares komfortnivå men i allmänhet är det en bra idé att skriva tydligt, läsbart och lätt att felsöka kod istället för att använda förkortningar.