Pytonorm

Listförståelser i Python

Listförståelser i Python
Listförståelser används ofta i Python för att skriva uttalanden med en rad som skapar en ny lista eller ordlista genom att kretsa över ett iterabelt objekt. Den här artikeln kommer att förklara hur man använder listförståelser i Python, med en grundläggande förklaring av hur loopar fungerar i Python.

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.

Mus Så här vänder du mus- och styrplattans rullningsriktning i Windows 10
Så här vänder du mus- och styrplattans rullningsriktning i Windows 10
Mus och Pekplattas gör inte bara datoranvändning lättare men effektivare och mindre tidskrävande. Vi kan inte föreställa oss ett liv utan dessa enhete...
Mus Så här ändrar du muspekare och markörstorlek, färg och schema på Windows 10
Så här ändrar du muspekare och markörstorlek, färg och schema på Windows 10
Muspekaren och markören i Windows 10 är mycket viktiga aspekter av operativsystemet. Detta kan också sägas för andra operativsystem, så i sanning är d...
Gratis och öppen källkodsmotorer för utveckling av Linux-spel
Den här artikeln kommer att täcka en lista över gratis motorer med öppen källkod som kan användas för att utveckla 2D- och 3D-spel på Linux. Det finns...