Filtrer Python-lister: 5 effektive metoder

I Python er lister en sentral metode for å organisere sekvensielle data. En liste er en fleksibel, innebygd struktur som lar deg lagre en ordnet samling av elementer. Det som er unikt med lister, er at de er mutable, det vil si at du kan endre innholdet etter opprettelsen. Elementene i en liste er indeksert fra null, noe som gir enkel tilgang og manipulasjon.

Indekseringen gjør det også mulig å lagre duplikate verdier. Python-lister er allsidige ettersom de kan inneholde elementer av ulike datatyper. Lister defineres ved å omslutte elementene med hakeparenteser og separere dem med komma.

Her er noen eksempler på lister i Python:

    # En liste med strenger
    farger = ['Rød', 'Oransje', 'Gul', 'Grønn', 'Blå', 'Indigo', 'Fiolett']

    # En liste med blandede datatyper
    filmer = ['Transformers', 2012, 'Avengers', 300]

    # En liste med duplikate verdier
    brukere = ['Ola', 'Kari', 'Lise', 'Ola']
    

Lister er svært nyttige datastrukturer som muliggjør en rekke operasjoner. En av de mest praktiske er filtrering, som gir deg muligheten til å hente ut spesifikke delmengder av data basert på definerte kriterier.

Hvorfor er det viktig å filtrere lister?

Filtrering av lister handler om å selektivt hente ut data som oppfyller bestemte betingelser. Tenk deg for eksempel at du har en liste med tall fra 1 til 10, og du kun er interessert i partall. Da vil filtrering være essensielt for å identifisere og isolere de tallene som er delelige med 2.

Filtrering er avgjørende innen datamanipulering og analyse. Det hjelper deg å fjerne irrelevante elementer, skape nye lister med spesifikke data og hente ut informasjon som tilfredsstiller bestemte vilkår.

Her er noen eksempler på hvor filtrering er nyttig:

  • Dataverifisering: Ved arbeid med lister er det viktig å validere at dataene er korrekte. Filtrering gir deg muligheten til å kun fokusere på data som overholder bestemte krav. For eksempel, i en liste over brukerdata, kan filtrering hjelpe deg å identifisere brukere med både for- og etternavn.
  • Datarensing: Lister kan inneholde en miks av datatyper, som kan inkludere uønskede data. Filtrering lar deg enkelt fjerne irrelevant informasjon. For eksempel, i en liste med navn, kan du filtrere bort numeriske verdier.
  • Dataanalyse: Filtrering er et kraftig verktøy i dataanalyse. Det hjelper deg å isolere undergrupper av data, slik at du lettere kan avdekke mønstre og trender. For eksempel, i en liste over studenter, kan du filtrere etter kjønn, alder, lokasjon eller karakter for å forenkle analysen.

Kort sagt, filtrering gir deg kontroll over dataene i listene dine, slik at du kan jobbe mer effektivt med relevante data. Det er en kritisk operasjon som forbedrer databehandlings- og analyseprosessene, og gjør dem raskere og mer nøyaktige.

Bruke `filter()`-funksjonen

`filter()` er en innebygd Python-funksjon som lar deg iterere gjennom en samling (som en liste, tuppel, sett eller ordbok) og velge ut de elementene som oppfyller et bestemt kriterium.

En iterabel i Python er et objekt som du kan gå gjennom element for element. Iterering gir deg tilgang til hvert element sekvensielt.

Syntaksen for `filter()`-funksjonen er:

        filter(funksjon, iterabel)
    

`funksjon` er en Python-funksjon som inneholder betingelsen for filtreringen.

`iterabel` er samlingen som skal filtreres. I dette tilfellet en liste.

`filter()`-funksjonen tar den gitte funksjonen og anvender den på hvert element i den iterable samlingen. Hvis et element oppfyller betingelsen (returnerer `True`), blir det valgt ut. Hvis ikke, blir det ignorert.

`filter()` returnerer en iterabel med de elementene som bestod filtreringen. Du kan bruke `list()`-funksjonen for å konvertere resultatet til en ny liste.

La oss se hvordan `filter()`-funksjonen fungerer i praksis. Vi har en liste med tall, og vi vil finne de som er mindre enn 50:

    # Liste med tall
    tall = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

    # Funksjon som definerer filtreringsbetingelsen
    def er_mindre_enn_50(tall):
        if tall < 50:
           return True
        else:
           return False

    # Bruker list()-funksjonen for å lage en liste fra iteratoren
    filtrerte_tall = list(filter(er_mindre_enn_50, tall))
    print(filtrerte_tall)
    

Dette gir følgende resultat:

    [15, 46, 24, 37]
    

Bruke en `for`-løkke

I Python brukes `for`-løkker for å iterere over sekvensielle datastrukturer som lister, tupler, strenger og arrays. `for`-løkken gjentar en kodeblokk for hvert element i sekvensen.

Den generelle syntaksen for en `for`-løkke er:

        for element in iterabel:
            # Kodeblokk som skal kjøres for hvert element
    

`element` er en variabel som representerer gjeldende element under hver iterasjon.

`iterabel` er sekvensen som `for`-løkken skal iterere over, i dette tilfellet en liste.

For å filtrere en liste med en `for`-løkke, må vi inkludere filtreringsbetingelsen i kodeblokken. Hvert element vil bli evaluert for å se om det oppfyller betingelsen.

Når du filtrerer med en `for`-løkke, må du også opprette en tom liste hvor du legger til elementene som tilfredsstiller kriteriene.

La oss filtrere en liste med tall for å få dem som er mindre enn 50:

    tall = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

    filtrerte_tall = []

    for tall in tall:
        if tall < 50:
            # append() brukes til å legge til tall som oppfyller betingelsen
            filtrerte_tall.append(tall)

    print(filtrerte_tall)
    

Dette gir følgende resultat:

    [15, 46, 24, 37]
    

Bruke en annen liste

Du kan også filtrere en liste ved å sjekke om elementer er tilstede i en annen liste. La oss se på følgende to lister:

    bokstaver = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']

    vokaler = ['a', 'e', 'i', 'o', 'u']
    

Vi kan identifisere hvilke bokstaver som ikke er vokaler ved å sjekke om de finnes i `vokaler`-listen. Hvis et element ikke finnes i `vokaler`-listen, er det en konsonant.

Vi kan enkelt hente ut alle konsonantene i `bokstaver`-listen med følgende kode:

    bokstaver = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
    vokaler = ['a', 'e', 'i', 'o', 'u']

    ikke_vokal = []

    for bokstav in bokstaver:
        if bokstav not in vokaler:
            ikke_vokal.append(bokstav)
    print(ikke_vokal)
    

Koden gir følgende resultat, som viser alle konsonantene i `bokstaver`-listen:

    ['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']
    

Bruke listeforståelse

Listeforståelse i Python gir en mer kortfattet måte å skape nye lister fra eksisterende lister. Listeforståelse reduserer antall kodelinjer som kreves for å lage en ny liste, ved å kombinere looping og elementtilføyelse i en enkelt linje.

Når du bruker listeforståelse, definerer og legger du til elementer i den nye listen på én linje.

Syntaksen for listeforståelse er:

        ny_liste = [uttrykk for element in iterabel if betingelse]
    

`ny_liste` er den nye listen som opprettes.

`uttrykk` er operasjonen som skal utføres på hvert element i den iterable samlingen.

`element` er en variabel som representerer hvert element i samlingen.

`iterabel` er samlingen som skal itereres over.

`if betingelse` er en valgfri del der du kan legge til en betingelse for å filtrere elementene som legges til i den nye listen.

For å se hvordan listeforståelse forenkler filtrering, skal vi igjen bruke `bokstaver`- og `vokaler`-listene for å hente ut alle konsonantene. Dette gjøres slik:

    bokstaver = ['a', 'h', 'q', 'd', 's', 'x', 'g', 'j', 'e', 'o', 'k', 'f', 'c', 'b', 'n']
    vokaler = ['a', 'e', 'i', 'o', 'u']

    # Listeforståelse
    ikke_vokal = [bokstav for bokstav in bokstaver if bokstav not in vokaler]
    print(ikke_vokal)
     

Dette gir samme resultat som tidligere, men med færre kodelinjer:

    ['h', 'q', 'd', 's', 'x', 'g', 'j', 'k', 'f', 'c', 'b', 'n']
    

Konklusjon

Når du arbeider med data i Python, er filtrering av lister en svært vanlig oppgave. Det er et viktig steg i både dataanalyse og behandling, da det lar deg fokusere på den informasjonen som er relevant.

Lister er en populær sekvensiell datastruktur i Python. Hvis du trenger å filtrere en liste, bør du vurdere en av metodene som presenteres i denne artikkelen.

Du kan også lese mer om hvordan du bruker lambda-funksjoner i Python med eksempler.