Tidig användning av listförståelse i Python kan göra iterativa listoperationer enkla för dig. Förutom att vara en enda rad är den mer läsbar och körs mer effektivt.

Du kan dock bli upparbetad om du inte vet hur du använder den. Det kan till och med vara mer frustrerande om du inte vet var du ska tillämpa den i din kod. Här visar vi dig hur du använder listförståelse i Python med några verkliga exempel.

Vad är listförståelse i Python och hur fungerar det?

Det är enkelt att skapa en lista med objekt med Python. Uppgiften kan dock bli lite tråkig när du behöver skapa en lista med värden eller objekt från matematiska eller strängåtgärder. Det är då att använda listförståelse kan vara till nytta.

En fördel med att använda listförståelse är att du kan utföra flera operationer i en enda lista.

Däremot skapar det nya objekt och lägger till dem i en tom lista som deklareras automatiskt. Så istället för att skapa en tom lista manuellt och lägga till den med en för loop, Pythons listförståelse låter dig göra detta automatiskt utan att du bry dig om hur den nya listan kommer igenom.

instagram viewer

Termen "listförståelse" kommer från det faktum att alla operationer finns i en Python-lista tilldelad en namngiven variabel. Som vi tidigare sagt låter det dig utföra specifika operationer i en enda kodrad. Det lägger sedan till utdata i en ny lista.

I slutändan kan du också använda utdata från listförståelse för andra ändamål. Det beror på att det staplar uttryck i separata variabler. Så du kan hänvisa till dem senare.

Till exempel kan du vara skrapa en webbplats med BeautifulSoup. Antag att du tänker hämta namnet på alla artiklar och deras priser från webbplatsen.

Du bestämmer dig sedan för att lägga skrapade data i en CSV- eller en Excel-fil. Den perfekta metoden är att skrapa namnet på alla artiklar och deras priser och placera dem båda i separata kolumner. Om du använder en listförståelse säkerställer du i så fall att du har skrapad data i dedikerade variabler. Du kan sedan konvertera sådana variabler till en Python DataFrame senare.

Titta på exemplet nedan:

Produkter = [i.text för i i bs.find_all ('namntaggar')]
Pris = [i.text för i i bs.find_all ('prislappar')]

När du har fått de loopade variablerna kan du sedan placera dem i separata kolumner i en DataFrame med Pythons Pandas.

Hur man skapar och använder en listförståelse i Python

De för loop är en viktig iterator i listförståelsen. Generellt tar en listförståelse i Python detta format:

ComprehensionVariable = [uttryck för objekt i listan]

Utskrift FörståelseVariabel matar ut resultatet av ovanstående kod som en lista.

Var dock försiktig så att du inte blandar ihop en listförståelse med en öppen för slinga.

Till exempel, låt oss använd en öppen för slinga för att få en lista över alla multiplar om tre mellan 1 och 30:

myList = []
för jag inom intervallet (1, 11):
myList.append (i * 3)
skriva ut (myList)
Utgång: [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

För att jämföra de två, låt oss göra samma sak med hjälp av en listförståelse:

multiplesOf3 = [i * 3 för i inom intervallet (1, 11)]
skriva ut (multiplesOf3)
Output = [3, 6, 9, 12, 15, 18, 21, 24, 27, 30]

Du kan också använda en listförståelse med villkorliga uttalanden. Exempelkoden nedan skriver ut alla udda siffror mellan 1 och 10:

oddNumbers = [i för i inom intervallet (1, 11) om inte i% 2 == 2]
skriva ut (oddNumbers)
Output = [1, 3, 5, 7, 9]

Nu ska vi också skriva om koden ovan med en öppen för slinga:

myList = []
för jag inom intervallet (1, 11):
om inte i% 2 == 0:
myList.append (i)
skriva ut (myList)
Utgång: [1, 3, 5, 7, 9]

Relaterad: Hur man lägger till en lista i Python

En listförståelse accepterar också kapslade om uttalanden:

oddNumbers = [i för i inom intervallet (1, 11) om inte i% 2 == 0 om jag <4]
skriva ut (oddNumbers)
Utgång: [1, 3]

Det tar också en kapslad för slinga:

someNums = [[i * 2 för i inom intervall (1, 3)] för _ inom intervall (4)]
skriva ut (someNums)

Du kan också ha en vanlig kapslad för slinga i listförståelse:

someNums = [i * 2 för i inom intervallet (1, 3) för k inom intervallet (4)]

Du kan också manipulera strängar med Python-listförståelse. Låt oss ta en titt på en ordförståelse nedan:

word = ["Detta är en pythonlista-förståelsehandledning"]
wordCounter = [i.count ('') + 1 för i i word]
skriva ut (wordCounter)
Utgång: 7

En listförståelse kan också acceptera en funktion som utför en specifik operation. Låt oss infoga en multiplikatorfunktion som får jämna siffror i en listförståelse för att se hur detta fungerar:

Siffror = [4, 7, 8, 15, 17, 10]
def multiplikator (n):
multipel = n * 2
returnera flera
multipleEven = [multiplikator (i) för i i siffror om i% 2 == 0]
skriva ut (multipleEven)
Utgång: [8, 16, 20]

Du kan fortfarande skriva koden ovan i en enda funktion utan att använda förståelse. Men en listförståelse är användbar när du behöver utföra flera iterationer och placera var och en av dem i separata variabler.

Du kan till exempel utföra en annan åtgärd på n och har en dedikerad variabel för den. Låt oss ändra förståelsen ovan för att generera jämna nummer från udda:

multipleEvenFromOdds = [multiplikator (i) för i i siffror om inte i% 2 == 0]
skriva ut (multipleEvenFromOdds)
Utgång: [14, 30, 34]

Ordbok och ställa förståelser

Förutom listförståelse erbjuder Python också en ordlista och en uppsättning förståelsefunktionalitet.

Ta en titt på exemplet på ordlistans förståelse nedan för att se hur det fungerar:

motsvarande = {i: i * 2 för i inom intervallet (10) om inte i% 2 == 0}
skriva ut (korrigera)
Utgång: {1: 2, 3: 6, 5: 10, 7: 14, 9: 18}

Koden ovan går igenom listan med siffror mellan 1 och 9 och gör dem till nycklarna. Det berättar sedan för Python att multiplicera varje tangent med två. Slutligen presenterar den resultaten av den operationen som motsvarande värden för varje tangent i den resulterande matrisen.

Relaterad: Hur arrays och listor fungerar i Python

En uppsättning förståelse är lite som en lista förståelse. Här är ett exempel på en förståelse:

siffror = {i ** (2) för i inom intervallet (10) om i% 4 == 0}
skriva ut (siffror)
Utgång: {0, 16, 64}

Till skillnad från listförståelse tar dock förståelse bort dubbletter:

nums = {i för i inom intervallet (20) om i% 2 == 1 för k inom intervallet (10) om k% 2 == 1}
skriva ut (nums)
Utgång: {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}

Du kan prova koden ovan med hjälp av listförståelse för att se hur de skiljer sig åt.

Kan du använda listförståelse varje gång?

Vi har tittat på olika exempel på listförståelse och var du kan använda dem. Liksom alla andra Python-metoder beror dock användningsfallet på en listförståelse på det specifika problemet du vill lösa. Därför bör du bara använda den om den är idealisk för det specifika problemet du vill lösa.

Ett av syftena med listförståelse är att förenkla din kod och göra den mer läsbar. Så se till att du undviker komplexitet när du hanterar det. Till exempel kan en lång Python-förståelse bli komplex att läsa. Det försämrar dess syfte.

E-post
Hur man använder Python List Comprehensions (och när man inte ska använda dem)

Här är allt du behöver veta om att använda den här fantastiska funktionen i Python som ökar din produktivitet och kodläsbarhet över natten.

Relaterade ämnen
  • Programmering
  • Pytonorm
Om författaren
Idowu Omisola (55 artiklar publicerade)

Idowu brinner för allt smart teknik och produktivitet. På fritiden leker han med kodning och byter till schackbrädet när han är uttråkad, men han älskar också att bryta sig från rutinen då och då. Hans passion för att visa människor vägen runt modern teknik motiverar honom att skriva mer.

Mer från Idowu Omisola

Prenumerera på vårt nyhetsbrev

Gå med i vårt nyhetsbrev för tekniska tips, recensioner, gratis e-böcker och exklusiva erbjudanden!

Ett steg till…!

Bekräfta din e-postadress i e-postmeddelandet som vi just skickade till dig.

.