I programmeringsspråket Python är listor en av de mest använda metoderna för att hantera sekventiell information. En lista i Python är en flexibel och inbyggd datastruktur som låter dig lagra och organisera en samling data. Varje objekt i en lista har en specifik position, kallad index, som börjar från noll. Det unika med listor är att du kan ändra deras innehåll även efter att de har skapats.
Eftersom objekt i en lista är indexerade kan listan innehålla flera identiska objekt. Dessutom kan listor i Python lagra element av olika datatyper. Elementen i en lista separeras med kommatecken och hela listan omges av hakparenteser.
Här följer några exempel på listor i Python:
# En lista som endast innehåller strängar färger = ['Röd', 'Orange', 'Gul', 'Grön', 'Blå', 'Indigo', 'Violett'] # En lista som innehåller olika datatyper filmer = ['Transformers', 2012, 'Avengers', 300] # En lista med dubbletter användare = ['John', 'Mary', 'Elizabeth', 'John']
Listor är mycket mångsidiga, och du kan utföra en mängd olika operationer på data som lagras i dem. En vanlig operation är att filtrera listan, vilket innebär att välja ut specifika delar av listan baserat på vissa kriterier.
Varför filtrering av listor är viktigt
Att filtrera en lista innebär att man plockar ut de data som uppfyller ett specifikt villkor. Till exempel, om du har en lista med tal från 1 till 10 och du bara vill ha de jämna talen, måste du filtrera listan för att få fram de tal som är delbara med två.
Filtrering är en viktig del av datahantering och dataanalys. Det gör det möjligt att ta bort oönskad information, skapa nya listor baserat på specifika villkor och extrahera data som uppfyller vissa kriterier.
Här är några praktiska exempel på när filtrering av listor är användbart:
- Datavalidering: När du har en lista kan du vilja kontrollera att all data uppfyller vissa krav. Om du till exempel har en lista med användare kan du vilja försäkra dig om att alla har både för- och efternamn. Filtrering låter dig validera datan innan du använder den.
- Datarengöring: Listor kan innehålla data av olika typer, och ibland finns det oönskade element som du inte behöver. I en lista med namn kan du till exempel ha numeriska värden som du vill ta bort. Filtrering hjälper dig att rensa bort oönskad information.
- Dataanalys: Filtrering är särskilt användbar i dataanalys, eftersom du kan fokusera på specifika datamängder. I en lista med studenter kan du filtrera bort manliga och kvinnliga studenter och använda resultatet i din analys. Du kan filtrera på ålder, plats eller klass för att dra mer relevanta slutsatser.
Att filtrera listor ger dig kontroll över den data du hanterar. Du kan välja att bara arbeta med den information som är relevant för dig. Det gör datahantering och analys mer effektiv, snabbare och noggrannare.
Använda filter()-funktionen
Funktionen filter()
är en inbyggd funktion i Python som används för att gå igenom ett itererbart objekt, som en lista, tuple, set eller dictionary. Funktionen väljer ut de objekt som uppfyller ett specifikt villkor.
Ett itererbart objekt i Python är ett objekt som kan gås igenom element för element. Genom att iterera genom ett objekt får du varje element en i taget.
Så här ser syntaxen för filter()
-funktionen ut:
filter(funktion, itererbart)
funktion
: En Python-funktion som definierar villkoret för filtreringen.
itererbart
: Det itererbara objektet som ska filtreras. I det här fallet är det en lista.
Funktionen filter()
tar den definierade funktionen och testar villkoret mot varje objekt i den itererbara datan. Om objektet uppfyller villkoret (funktionen returnerar True
), inkluderas det i resultatet. Om villkoret inte uppfylls väljs objektet bort.
Funktionen filter()
returnerar ett itererbart objekt som innehåller de element som klarade filtreringen. Du kan skapa en ny lista genom att använda funktionen list()
.
Här är ett exempel på hur filter()
fungerar. Vi ska filtrera en lista med nummer och bara ta med de som är mindre än 50:
# En lista med nummer nummer = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61] # En funktion som definierar filtreringsvillkoret def är_mindre_än_50(num): if num < 50: return True else: return False # Skapa en lista med hjälp av funktionen list() och filter() filtrerade_nummer = list(filter(är_mindre_än_50, nummer)) print(filtrerade_nummer)
Koden ovan skriver ut följande resultat:
[15, 46, 24, 37]
Använda en for-loop
En for-loop i Python är ett sätt att upprepa en kodbit för varje element i en sekventiell datastruktur som en lista, tuple, sträng eller array. Loopen går igenom varje element i följd.
Den grundläggande syntaxen för en for-loop är:
for element in itererbart: # Kod som ska utföras för varje element
element
: En variabel som representerar det nuvarande elementet i loopen.
itererbart
: Den sekvens som for-loopen itererar över, i det här fallet en lista.
För att filtrera en lista med en for-loop måste du inkludera filtreringsvillkoret i koden som ska utföras inuti loopen. Då testas varje element för att se om det uppfyller villkoret.
När du filtrerar en lista med en for-loop behöver du också skapa en tom lista där du lägger till de värden som uppfyller filtreringsvillkoret.
Här är ett exempel där vi filtrerar en lista med tal för att ta fram de som är mindre än 50:
nummer = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61] filtrerade_nummer = [] for num in nummer: if num < 50: # lägg till värdet i den filtrerade listan filtrerade_nummer.append(num) print(filtrerade_nummer)
Koden ovan skriver ut följande:
[15, 46, 24, 37]
Använda en annan lista
Du kan filtrera en lista med hjälp av en annan lista genom att kontrollera om ett element i den första listan finns i den andra listan. Tänk dig följande två listor:
bokstäver = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n'] vokaler = ['a', 'e', 'i', 'o', 'u']
Vi vill ta reda på vilka bokstäver som inte är vokaler. Vi kan kontrollera om varje bokstav finns i listan med vokaler. Om en bokstav inte finns i vokallistan vet vi att den inte är en vokal.
Här är koden som tar fram alla bokstäver som inte är vokaler:
bokstäver = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n'] vokaler = ['a', 'e', 'i', 'o', 'u'] inte_vokal = [] for bokstav in bokstäver: if bokstav not in vokaler: inte_vokal.append(bokstav) print(inte_vokal)
Koden ovan skriver ut de bokstäver som inte är vokaler:
['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']
Använda listförståelse
Listförståelse är ett sätt i Python att skapa en ny lista från en befintlig lista med en mer kompakt och läsbar syntax. Det minskar antalet rader kod som behövs för att skapa en ny lista.
Med listförståelse kan du både definiera och lägga till element i den nya listan på en och samma rad.
Så här ser syntaxen ut för listförståelse:
ny_lista = [uttryck for element in itererbart if villkor]
ny_lista
: Den nya listan som skapas.
uttryck
: En operation som tillämpas på varje element i den itererbara datan.
element
: En variabel som representerar det aktuella elementet i loopen.
itererbart
: Den itererbara datan som elementen väljs från.
if villkor
: Ett valfritt villkor för att filtrera element.
Vi använder listförståelse för att filtrera bort vokaler från bokstavslistan:
bokstäver = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n'] vokaler = ['a', 'e', 'i', 'o', 'u'] # listförståelse inte_vokal = [bokstav for bokstav in bokstäver if bokstav not in vokaler] print(inte_vokal)
Koden ovan ger samma resultat som tidigare, men med mindre kod:
['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']
Slutsats
När du arbetar med data i Python är filtrering av data från en lista en mycket vanlig uppgift. Det är ett viktigt steg i dataanalys och databearbetning, eftersom du kan fokusera på den information som är relevant.
Listor är en populär datastruktur i Python. Om du behöver filtrera en lista kan du använda någon av metoderna som beskrivs här.
Du kan även läsa om hur du använder lambda-funktioner i Python med exempel.