Python unik liste - Sådan får du alle de unikke værdier på en liste eller en matrix

Sig, at du har en liste, der indeholder duplikatnumre:

numbers = [1, 1, 2, 3, 3, 4] 

Men du vil have en liste over unikke numre.

unique_numbers = [1, 2, 3, 4] 

Der er et par måder at få en liste over unikke værdier i Python. Denne artikel viser dig hvordan.

Mulighed 1 - Brug af et sæt til at få unikke elementer

Brug en seten vej til at gå om det. Et sæt er nyttigt, fordi det indeholder unikke elementer.

Du kan bruge et sæt til at få de unikke elementer. Drej derefter sættet til en liste.

Lad os se på to tilgange, der bruger et sæt og en liste. Den første tilgang er detaljeret, men det er nyttigt at se, hvad der sker hvert trin på vejen.

numbers = [1, 2, 2, 3, 3, 4, 5] def get_unique_numbers(numbers): list_of_unique_numbers = [] unique_numbers = set(numbers) for number in unique_numbers: list_of_unique_numbers.append(number) return list_of_unique_numbers print(get_unique_numbers(numbers)) # result: [1, 2, 3, 4, 5] 

Lad os se nærmere på, hvad der sker. Jeg får en liste med numre numbers. Jeg overfører denne liste til funktionen get_unique_numbers.

Inde i funktionen opretter jeg en tom liste, som til sidst vil rumme alle de unikke numre. Derefter bruger jeg a for setat få de unikke numre fra numberslisten.

unique_numbers = set(numbers) 

Jeg har det, jeg har brug for: de unikke numre. Nu er jeg nødt til at få disse værdier på en liste. For at gøre det bruger jeg en for-løkke til at gentage hvert nummer i sættet.

for number in unique_numbers: list_of_unique_numbers.append(number) 

På hver iteration tilføjer jeg det aktuelle nummer til listen list_of_unique_numbers. Endelig returnerer jeg denne liste i slutningen af ​​programmet.

Der er en kortere måde at bruge et sæt og en liste til at få unikke værdier i Python. Det er det, vi skal tackle næste gang.

En kortere tilgang med sæt

Alle koder skrevet i ovenstående eksempel kan kondenseres i en linje ved hjælp af Pythons indbyggede funktioner.

numbers = [1, 2, 2, 3, 3, 4, 5] unique_numbers = list(set(numbers)) print(unique_numbers) # Result: [1, 2, 3, 4, 5] 

Selvom denne kode ser meget anderledes ud end det første eksempel, er ideen den samme. Brug et sæt til at få de unikke numre. Drej derefter sættet til en liste.

unique_numbers = list(set(numbers)) 

Det er nyttigt at tænke "indefra og ud", når du læser ovenstående kode. Den inderste kode bliver evalueret første: set(numbers). Derefter yderste kode evalueret: list(set(numbers)).

Mulighed 2 - Brug af iteration til at identificere unikke værdier

Iteration er en anden tilgang at overveje.

Hovedideen er at oprette en tom liste, der indeholder unikke numre. Brug derefter et for-loop-iterat over hvert nummer på den givne liste. Hvis nummeret allerede er på den unikke liste, skal du fortsætte til næste iteration. Ellers tilføj nummeret til det.

Lad os se på to måder at bruge iteration til at få de unikke værdier på en liste, begyndende med den mere detaljerede.

numbers = [20, 20, 30, 30, 40] def get_unique_numbers(numbers): unique = [] for number in numbers: if number in unique: continue else: unique.append(number) return unique print(get_unique_numbers(numbers)) # Result: [20, 30, 40] 

Her er hvad der sker hvert trin på vejen. Først får jeg en liste over numre numbers. Jeg overfører denne liste til min funktion get_unique_numbers.

Inde i funktion, jeg oprette en tom liste, unique. Til sidst vil denne liste indeholde alle de unikke numre.

Jeg bruger en for-løkke til at gentage hvert nummer på numberslisten.

 for number in numbers: if number in unique: continue else: unique.append(number) 

Den betingede inde i sløjfen kontrollerer for at se, om nummeret på den aktuelle iteration er på uniquelisten. I så fald fortsætter løkken til næste iteration. Ellers tilføjes nummeret til denne liste.

Her er det vigtige punkt: kun de unikke numre tilføjes. Når løkken er afsluttet, vender jeg tilbage, uniquesom indeholder alle de unikke numre.

En kortere tilgang med gentagelse

Der er en anden måde at skrive funktionen på færre linjer.

numbers = [20, 20, 30, 30, 40] def get_unique_numbers(numbers): unique = [] for number in numbers: if number not in unique: unique.append(number) return unique #Result: [20, 30, 40] 

Forskellen er den betingede. Denne gang er det indstillet til at læse sådan: Hvis nummeret ikke er i unique, skal du tilføje det.

if number not in unique: unique.append(number) 

Ellers flytter sløjfen videre til det næste nummer på listen numbers.

Resultatet er det samme. Imidlertid er det undertiden sværere at tænke på og læse kode, når den boolske negeres.

Der er andre måder at finde unikke værdier på en Python-liste. Men du vil sandsynligvis finde dig selv at nå frem til en af ​​de tilgange, der er dækket af denne artikel.

Jeg skriver om at lære at programmere og de bedste måder at gøre det på amymhaddad.com. Følg mig på Twitter: @amymhaddad.