Nyheter i Android, Telefoner, Prylar Och Recensioner

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

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

Du kan dock bli jobbig om du inte vet hur du använder den. Det kan till och med vara mer frustrerande om du inte vet var du ska använda det i din kod. Här kommer vi att visa 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 generera en lista med värden eller objekt från matematiska operationer eller strängoperationer. Det är då det kan vara praktiskt att använda listförståelse.

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 den nya objekt och lägger till dem i en tom lista som den deklarerar automatiskt. Så istället för att göra en tom lista manuellt och lägga till den med en för loop, låter Pythons listförståelse dig göra detta automatiskt utan att du bryr dig om hur den nya listan kommer fram.

Termen “listförståelse” kommer från det faktum att alla operationer finns i en Python-lista som är tilldelad en namngiven variabel. Som vi nämnde tidigare låter den dig utföra specifika operationer i en enda kodrad. Den lägger sedan till resultatet 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 den staplar uttryck i separata variabler. Så du kan hänvisa till dem senare.

Till exempel kanske du skrapar en webbplats med BeautifulSoup. Anta att du tänker få namnet på alla varor och deras priser från webbplatsen.

Du bestämmer dig sedan för att lägga den skrapade informationen i en CSV- eller en Excel-fil. Den idealiska metoden är att skrapa namnet på alla föremål och deras priser och placera båda i separata kolumner. Men genom att använda 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.

Relaterad  Hur man återskapar naturligt fönsterljus med blixtljus för matfotografering

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 väl 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 tar en listförståelse i Python detta format:

ComprehensionVariable = [expression for items in list]

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

Var dock noga med att inte blanda ihop en listförståelse med en öppen för slinga.

Låt oss till exempel använda en öppen för 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 hjälp av 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]

En listförståelse accepterar också kapslade if-satser:

oddNumbers = [i for i in range(1, 11) if not i%2==0 if i<4]
print(oddNumbers)
Output: [1, 3]

Det tar också en kapslad 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 listaförståelse:

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

Du kan manipulera strängar med Python-listförståelse också. Låt oss ta en titt på en motförståelse av ord 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.

Relaterad  Elden Ring: Spela med CJ från GTA San Andreas? Det här löser sig!

Du kan till exempel utföra en annan operation på n och har en dedikerad variabel för det. Låt oss modifiera 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 uppsättningsförståelser

Förutom en listförståelse erbjuder Python också en ordbok och en uppsättningsförståelsefunktion.

Ta en titt på exempel på ordboksförståelse 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 itererar genom listan med 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.

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

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 uppsättningsförståelse 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 listaförståelse för att se hur de skiljer sig.

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

Vi har tagit en titt 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 bör du bara använda den om den är idealisk för det specifika problem du vill lösa.

Relaterad  I Japan utvecklade de en skärm som kan göra cunnilingus med smaken av en söt rulle från Skyrim

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 motverkar dess syfte.

Om författaren

Idowu Omisola (124 artiklar publicerade)

Idowu brinner för allt smart teknik och produktivitet. I hans free tid, han leker med kodning och byter till schackbrädet när han har tråkigt, men han älskar också att bryta sig loss 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, free e-böcker och exklusiva erbjudanden!

Klicka här för att prenumerera