Hvordan filtrere listen i Python på den riktige måten å få mer ut av dataene dine

I Python er en av de mest populære måtene å lagre sekvensielle eller bestilte data på gjennom bruk av lister. En liste i Python er en ordnet, foranderlig, innebygd datastruktur som brukes til å lagre en samling av data. Elementer som er lagret i en liste indekseres fra null, og brukere kan endre innholdet i en liste etter at den er opprettet.

Det faktum at elementer i en liste er indeksert tillater lagring av dupliserte elementer i en liste. Lister i Python kan også inneholde elementer av forskjellige datatyper. Elementer i en liste er atskilt med komma og omsluttet av hakeparenteser.

Her er eksempler på lister i Python:

# A list containing one data type - String
colors = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']

# A list containing multiple data types
movies = ['Transformers', 2012, 'Avengers', 300]

# A list with duplicate values
users = ['John', 'Mary', 'Elizabeth', 'John']

Lister er en veldig allsidig datastruktur, og du kan utføre mange operasjoner på dataene som er lagret i lister. En vanlig og nyttig operasjon utført på lister er å filtrere dataene som er lagret i listen.

Hvorfor filtrering av lister er viktig

Å filtrere en liste betyr å trekke ut spesifikke delsett av data som oppfyller et gitt kriterium. For eksempel kan vi bare være interessert i partall i en liste som inneholder tallene 1 til 10. For å trekke ut slike data fra listen, er alt vi trenger å gjøre å filtrere listen for å få tall som er nøyaktig delbare med to.

Filtrering er spesielt nyttig i datamanipulering og dataanalyse, da det lar deg fjerne uønskede elementer fra lister, lage nye lister som inneholder elementer som oppfyller gitte kriterier, og trekke ut data som oppfyller visse betingelser.

Noen virkelige anvendelser av filtreringslister inkluderer:

  • Datavalidering – Når du arbeider med en liste, vil du kanskje bare jobbe med data som oppfyller et gitt kriterium. I en liste over brukere kan du for eksempel være interessert i brukere med både for- og etternavn. Filtrering kan tillate deg å verifisere og validere dataene i listen før du behandler dem. På denne måten slipper du å jobbe med data som ikke oppfyller kravene dine.
  • Datarensing – Siden lister kan lagre en rekke datatyper, er det ikke sjelden å finne at lister inneholder uønskede data som du ikke er interessert i. For eksempel, i en liste som inneholder navn, er du kanskje ikke interessert i numeriske verdier i listen. Gjennom filtrering kan du fjerne uønskede data.
  • Dataanalyse – Filtrering av data er spesielt nyttig i dataanalyse ettersom det lar deg fokusere på spesifikke undergrupper av data, noe som lar deg enkelt identifisere mønstre og trender. I en liste over studenter kan du for eksempel filtrere ut mannlige og kvinnelige studenter og bruke resultatet i dataanalyse. Du kan til og med filtrere etter alder, plassering og karakter. Dette lar deg trekke mer nyttige konklusjoner fra spesifikke undergrupper av data i en liste
  Forstå Stack Implementering i Python

Filtrering av lister er en veldig nyttig funksjon siden den gir deg kontroll over dataene som er lagret i en liste, slik at du kun kan jobbe med dataene du er interessert i.

Målretting mot spesifikke delsett av data som er lagret i en liste er veldig nyttig, da det strømlinjeformer databehandling og dataanalyse, noe som gjør prosessene bedre, raskere og mer nøyaktige.

Bruker filter()-funksjonen

Filter()-funksjonen er en innebygd Python-funksjon som kan brukes til å iterere gjennom en iterabel som en liste, tupler, sett eller ordbok og trekke ut elementer i iterablen som tilfredsstiller en gitt betingelse.

En Iterable i Python er et objekt som kan løkkes gjennom elementene én etter én. Iterering gjennom en iterabel returnerer elementene i den iterable én om gangen.

Syntaksen for filterfunksjonen er som følger:

filter(function, iterable)

funksjon – en Python-funksjon som inneholder filtreringsbetingelsen

iterable – den iterable som skal filtreres. I dette tilfellet bruker vi en liste.

Filter()-funksjonen tar den beståtte funksjonen og bruker den på hvert element i den bestått iterable, og tester filtreringsbetingelsen mot elementet. Hvis elementet tilfredsstiller betingelsen, det vil si at det returnerer boolsk true, som vil bli valgt av filter()-funksjonen. I tilfelle den ikke tilfredsstiller betingelsen, velges ikke elementet.

Filter()-funksjonen returnerer en iterabel med elementer som besto filtreringsbetingelsen. Du kan opprette en ny liste som inneholder elementer som bestod filtreringsbetingelsen ved å bruke list()-funksjonen.

For å se filter()-funksjonen i aksjon, bør du vurdere listen nedenfor, som blir filtrert for å velge tall som er mindre enn 50:

#A list of numbers
numbers = [79, 15, 92, 53, 46, 24, 81, 77, 37, 61]

# function containing the filtering condition
def is_even(num):
   if num < 50:
      return True
   else:
      return False

# the function list() is used to create a list from the iterable
# returned by the filter() function
filtered_numbers = list(filter(is_even, numbers))
print(filtered_numbers)

Koden ovenfor skriver ut følgende resultat:

[15, 46, 24, 37]

Bruke en for-løkke

I Python er en for-løkke en kontrollflytsetning som brukes til å iterere over sekvensielle datastrukturer som en liste, tupler, strenger og arrays. En for-løkke utfører gjentatte ganger en kodeblokk for hvert element i en sekvens.

  Hvordan få Vidgo 7 dagers gratis prøveversjon

Den generelle syntaksen for en for-løkke er som følger:

for item in iterable:
    # Block of code to be executed for each item in the iterabele

element – ​​en variabel som representerer det gjeldende elementet som behandles i en iterasjon av løkken

iterable – sekvensen som for-løkken itererer over. I dette tilfellet en liste

For å filtrere en liste ved hjelp av en for-løkke, må vi sende inn vår filtreringsbetingelse i delen for kodeblokken som skal kjøres. På denne måten vil hvert element bli evaluert for å se om det tilfredsstiller en gitt betingelse.

Når du bruker en for-løkke til å filtrere en liste, må du også lage en tom liste der du legger til verdier som passerer filtreringsbetingelsen.

For å se dette i aksjon, la oss filtrere en liste over tall for å få tall mindre enn 50 ved å bruke en for-løkke:

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

filtered_numbers = []

for num in numbers:
    if num < 50:
        # append() used to add a number that passes the condition
        # into filtered_numbers.
        filtered_numbers.append(num)

print(filtered_numbers)

Koden ovenfor skriver ut følgende resultat:

[15, 46, 24, 37]

Bruker en annen liste

Du kan filtrere en liste ved å bruke en annen ved å sjekke om et element i en liste du vil filtrere, vises i en annen liste. Tenk for eksempel på følgende to lister

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

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

I listen kalt bokstaver ovenfor kan vi bestemme hvilke elementer i listen som ikke er vokaler ved å sjekke om elementet vises i vokallisten eller ikke. Hvis et element ikke vises i vokallisten, er det ikke en vokal.

På denne måten kan vi få alle tegn i bokstaver som ikke er vokaler. For å gjøre dette, kjør følgende kode:

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

not_vowel = []

for letter in letters:
    if letter not in vowels:
        not_vowel.append(letter)
print(not_vowel)

Koden ovenfor skriver ut følgende utdata, som inneholder tegn i bokstaver som ikke er vokaler.

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

Bruke listeforståelse

I Python tilbyr listeforståelse en kortere, mer konsis og renere syntaks for å lage en ny liste fra en eksisterende liste. Listeforståelse har muligheten til å redusere de flere kodelinjene som brukes til å lage en ny liste fra en annen liste ved å bruke en for-løkke til en enkelt linje.

  8 mest sikre kalendere du kan bruke i 2022

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

Syntaksen for listeforståelse er som følger:

new_list = [expression for element in iterable if condition]

new_list – en ny liste som inneholder elementer lagt til av listeforståelsen

uttrykk – en operasjon som vil bli brukt på hvert element i den iterable

element – ​​variabelnavn som representerer det aktive elementet i den iterable

iterable – en iterabel som elementer vil bli valgt fra.

if condition – en valgfri del der en betingelse kan legges til for å filtrere elementer for å bare legge til de som tilfredsstiller en gitt betingelse i den nye listen som blir opprettet.

For å se listeforståelse i aksjon og hvor mye det kan forenkle prosessen med å filtrere og lage en ny liste, bruker vi bokstav- og vokallisten til å filtrere ut elementer i bokstavlisten som ikke er i vokallisten. For å gjøre dette, kjør følgende kode:

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

# list comprehension
not_vowel = [letter for letter in letters if letter not in vowels]
print(not_vowel)

Utgangen av koden ovenfor er vist nedenfor:

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

Utgangen ligner på forrige eksempel, som brukte en for-løkke for å filtrere en liste ved hjelp av en annen liste. Den bruker imidlertid færre linjer med kode for å oppnå samme resultat.

Konklusjon

Når du arbeider med data i Python, er en vanlig operasjon som du er bundet til å utføre, filtrering av data fra en iterabel, for eksempel en liste. Dette er et veldig nyttig trinn i dataanalyse og databehandling da det lar deg kun jobbe med data som er relevante for operasjonen eller behandlingen som gjøres.

En veldig populær sekvensiell datastruktur i Python er listen. I tilfelle du finner deg selv å jobbe med en liste og du trenger å filtrere den, bør du vurdere å bruke en av metodene som er fremhevet i artikkelen.

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