I Python er en af ​​de mest populære måder at gemme sekventielle eller bestilte data på ved at bruge lister. En liste i Python er en ordnet, foranderlig, indbygget datastruktur, der bruges til at gemme en samling af data. Elementer, der er gemt på en liste, indekseres fra nul, og brugere kan ændre indholdet af en liste, efter at den er blevet oprettet.

Det faktum, at elementer på en liste er indekseret, tillader lagring af duplikerede elementer på en liste. Lister i Python kan også indeholde elementer af forskellige datatyper. Elementer på en liste er adskilt med kommaer og omgivet af firkantede parenteser.

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 meget alsidig datastruktur, og du kan udføre mange handlinger på de data, der er gemt i lister. En almindelig og nyttig handling udført på lister er at filtrere de data, der er gemt på listen.

Hvorfor filtrering af lister er vigtig

Filtrering af en liste betyder at udtrække specifikke delmængder af data, der opfylder et givet kriterium. For eksempel er vi måske kun interesserede i lige tal på en liste, der indeholder tallene 1 til 10. For at udtrække sådanne data fra listen, er alt, hvad vi skal gøre, at filtrere listen for at få tal, der er nøjagtigt delelige med to.

Filtrering er især nyttig i datamanipulation og dataanalyse, da det gør det muligt at fjerne uønskede elementer fra lister, oprette nye lister indeholdende elementer, der opfylder givne kriterier, og udtrække data, der opfylder visse betingelser.

Nogle applikationer i den virkelige verden af ​​filtreringslister inkluderer:

  • Datavalidering – Når du arbejder med en liste, vil du måske kun arbejde med data, der opfylder et givet kriterium. På en liste over brugere kan du for eksempel være interesseret i brugere med både for- og efternavn. Filtrering kan give dig mulighed for at verificere og validere dataene på listen, før du behandler dem. På denne måde undgår du at arbejde med data, der ikke opfylder dine krav.
  • Datarensning – Da lister kan gemme en række forskellige datatyper, er det ikke sjældent, at lister indeholder uønskede data, som du ikke er interesseret i. For eksempel, i en liste, der indeholder navne, er du måske ikke interesseret i numeriske værdier i listen. Gennem filtrering kan du fjerne de uønskede data.
  • Dataanalyse – Filtrering af data er særlig nyttig i dataanalyse, da det giver dig mulighed for at fokusere på specifikke delmængder af data, hvilket giver dig mulighed for nemt at identificere mønstre og tendenser. I en liste over studerende kan du for eksempel filtrere mandlige og kvindelige studerende fra og bruge resultatet i dataanalyse. Du kan endda filtrere efter alder, placering og klasse. Dette giver dig mulighed for at drage mere nyttige konklusioner fra specifikke delmængder af data på en liste
  Sådan sporer du aktier med Google Sheets

Filtrering af lister er en meget nyttig funktion, da den giver dig kontrol over de data, der er gemt på en liste, så du kun kan arbejde med de data, du er interesseret i.

Målretning af specifikke delmængder af data, der er gemt på en liste, er meget nyttig, da det strømliner databehandling og dataanalyse, hvilket gør processerne bedre, hurtigere og mere nøjagtige.

Bruger filter() funktion

Filter()-funktionen er en indbygget Python-funktion, der kan bruges til at iterere gennem en iterabel, såsom en liste, tuples, set eller ordbog og udtrække elementer i iterablen, der opfylder en given betingelse.

En Iterable i Python er et objekt, som kan sløjfes gennem dets elementer én efter én. Gentagelse gennem en iterable returnerer elementerne i den iterable én ad gangen.

Syntaksen for filterfunktionen er som følger:

filter(function, iterable)

funktion – en Python-funktion, der indeholder filtreringsbetingelsen

iterable – den iterable, der skal filtreres. I dette tilfælde vil vi bruge en liste.

Filter()-funktionen tager den beståede funktion og anvender den på hvert element i den beståede iterable, og tester filtreringstilstanden mod elementet. Hvis elementet opfylder betingelsen, det vil sige, returnerer det boolean true, som vil blive valgt af filter()-funktionen. Hvis det ikke opfylder betingelsen, vælges varen ikke.

Filter()-funktionen returnerer en iterabel med elementer, der bestod filtreringsbetingelsen. Du kan oprette en ny liste, der indeholder elementer, der bestod filtreringsbetingelsen, ved at bruge funktionen list().

For at se filter()-funktionen i aktion, overvej listen nedenfor, som bliver filtreret for at vælge tal, der er mindre end 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)

Ovenstående kode udskriver følgende resultat:

[15, 46, 24, 37]

Brug af en for-løkke

I Python er en for-løkke en kontrolflowsætning, der bruges til at iterere over sekventielle datastrukturer såsom en liste, tupler, strenge/ og arrays. En for-løkke udfører gentagne gange en kodeblok for hvert element i en sekvens.

  Sådan repareres en langsom eller ikke-responsiv Mac

Den generelle syntaks 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

item – en variabel, der repræsenterer det aktuelle element, der behandles i en iteration af løkken

iterable – den sekvens, som for-løkken itererer over. I dette tilfælde en liste

For at filtrere en liste ved hjælp af en for-løkke skal vi indsende vores filtreringstilstand i sektionen for, at kodeblokken skal udføres. På denne måde vil hver vare blive evalueret for at se, om den opfylder en given betingelse.

Når du bruger en for-løkke til at filtrere en liste, skal du også oprette en tom liste, hvor du tilføjer værdier, der passer din filtreringsbetingelse.

For at se dette i aktion, lad os filtrere en liste over tal for at få tal mindre end 50 ved hjælp af 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)

Ovenstående kode udskriver følgende resultat:

[15, 46, 24, 37]

Bruger en anden liste

Du kan filtrere en liste med en anden ved at kontrollere, om et element på en liste, du vil filtrere, vises på en anden liste. Overvej for eksempel 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 kaldet bogstaver ovenfor kan vi afgøre, hvilke elementer på listen, der ikke er vokaler, ved at kontrollere, om elementet optræder i vokallisten eller ej. Hvis et element ikke vises i vokallisten, er det ikke en vokal.

På denne måde kan vi få alle tegn i bogstaver, der ikke er vokaler. For at gøre dette skal du udføre 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)

Ovenstående kode udskriver følgende output, som indeholder tegn i bogstaver, der ikke er vokaler.

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

Brug af listeforståelse

I Python tilbyder listeforståelse en kortere, mere kortfattet og renere syntaks til at oprette en ny liste fra en eksisterende liste. Listeforståelse har evnen til at reducere de flere kodelinjer, der bruges til at oprette en ny liste fra en anden liste ved hjælp af en for-løkke til en enkelt linje.

  Slå automatisk lyden fra på alle inaktive faner i Chrome

Dette skyldes, at når du bruger listeforståelse, definerer og tilføjer du elementer til den nye liste 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, der indeholder elementer tilføjet af listeforståelsen

udtryk – en operation, der vil blive anvendt på hvert element i den iterable

item – variabelnavn, der repræsenterer det aktuelt aktive element i den iterable

iterable – en iterable, som elementer vil blive valgt fra.

if condition – en valgfri del, hvor en betingelse kan tilføjes til filterelementer for kun at tilføje dem, der opfylder en given betingelse, til den nye liste, der oprettes.

For at se listeforståelse i aktion, og hvor meget det kan forenkle processen med at filtrere og oprette en ny liste, bruger vi bogstav- og vokallisten til at bortfiltrere elementer på bogstavlisten, som ikke er på vokallisten. For at gøre dette skal du udføre 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)

Outputtet af koden ovenfor er vist nedenfor:

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

Outputtet ligner det foregående eksempel, som brugte en for-løkke til at filtrere en liste ved hjælp af en anden liste. Det bruger dog færre linjer kode for at opnå det samme resultat.

Konklusion

Når du arbejder med data i Python, er en almindelig operation, som du er bundet til at udføre, at filtrere data fra en iterabel, såsom en liste. Dette er et meget nyttigt trin i dataanalyse og databehandling, da det giver dig mulighed for kun at arbejde med data, der er relevante for den operation eller behandling, der udføres.

En meget populær sekventiel datastruktur i Python er listen. I tilfælde af at du finder dig selv at arbejde med en liste, og du har brug for at filtrere den, kan du overveje at bruge en af ​​de metoder, der er fremhævet i artiklen.

Du kan også læse om, hvordan du bruger lambda-funktioner i Python med eksempler.

By Anders