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

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

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.





Men du kan bli trött 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 det 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ängoperationer. 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.

hur man laddar ner pokemon go på datorn

Däremot skapar det nya objekt och lägger till dem i en tom lista som deklareras automatiskt. Så istället för att göra 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 behöver bry dig om hur den nya listan kommer igenom.



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

I slutändan kan du också använda utdata från en 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 det skrapa en webbplats med BeautifulSoup . Antag att du tänker få namnet på alla artiklar och deras priser från webbplatsen.

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





Titta på exemplet nedan:

Products = [i.text for i in bs.find_all('name tags')]
Price = [i.text for i in bs.find_all('price tags')]

När du har fått de loopade variablerna kan du sedan lägga 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 en listförståelse. I allmänhet har en listförståelse i Python följande format:

ComprehensionVariable = [expression for items in list]

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

Var dock försiktig så att du inte förväxlar en listförståelse med en öppen för slinga.

Till exempel, låt oss använd en open for loop för att få en lista över alla multiplar av tre mellan 1 och 30:

myList = []
for i in range(1, 11):
myList.append(i * 3)
print(myList)
Output: [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 en listförståelse:

multiplesOf3 = [i*3 for i in range(1, 11)]
print(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 tal mellan 1 och 10:

oddNumbers = [i for i in range(1, 11) if not i%2==2]
print(oddNumbers)
Output = [1, 3, 5, 7, 9]

Låt oss nu också skriva om koden ovan med en öppen för slinga:

myList = []
for i in range(1, 11):
if not i%2 == 0:
myList.append(i)
print(myList)
Output: [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 for i in range(1, 11) if not i%2==0 if i<4]
print(oddNumbers)
Output: [1, 3]

Det tar också ett kapslat för slinga:

someNums = [[i*2 for i in range(1, 3)] for _ in range(4)]
print(someNums)

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

someNums = [i*2 for i in range(1, 3) for k in range(4)]

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

word = ['This is a python list comprehension tutorial']
wordCounter = [i.count(' ') + 1 for i in word]
print(wordCounter)
Output: 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 tal i en listförståelse för att se hur detta fungerar:

Numbers = [4, 7, 8, 15, 17, 10]
def multiplier(n):
multiple = n*2
return multiple
multipleEven = [multiplier(i) for i in Numbers if i%2==0]
print(multipleEven)
Output: [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.

Till exempel kan du utföra en annan operation n och har en dedikerad variabel för det. Låt oss ändra förståelsen ovan för att generera jämna tal från udda:

multipleEvenFromOdds = [multiplier(i) for i in Numbers if not i%2==0]
print(multipleEvenFromOdds)
Output: [14, 30, 34]

Ordbok och Set Comprehensions

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

Ta en titt på exempelordförståelsen nedan för att se hur det fungerar:

corresponding = {i: i*2 for i in range(10) if not i%2==0}
print(corr)
Output: {1: 2, 3: 6, 5: 10, 7: 14, 9: 18}

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

Relaterad: Hur matriser och listor fungerar i Python

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

hur man fixar sim inte tillhandahålls
numbers = {i**(2) for i in range(10) if i%4==0}
print(numbers)
Output: {0, 16, 64}

Men till skillnad från listförståelse, tar setuppfattning bort dubbletter:

nums = {i for i in range(20) if i%2==1 for k in range(10) if k%2==1}
print(nums)
Output: {1, 3, 5, 7, 9, 11, 13, 15, 17, 19}

Du kan prova koden ovan med hjälp av en 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. Men som alla andra Python-metoder beror användningsfallet för en listförståelse på det specifika problem du vill lösa. Därför ska 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 besegrar dess syfte.

Dela med sig Dela med sig Tweet 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 denna fantastiska funktion i Python som ökar din produktivitet och kodläsbarhet över en natt.

Läs Nästa
Relaterade ämnen
  • Programmering
  • Pytonorm
Om författaren Idisou Omisola(94 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 har tråkigt, men han älskar också att bryta sig från rutinen då och då. Hans passion för att visa människor vägen kring 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!

Klicka här för att prenumerera