Jedinstveni popis Pythona - Kako dobiti sve jedinstvene vrijednosti na popisu ili u nizu

Recimo da imate popis koji sadrži dvostruke brojeve:

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

Ali želite popis jedinstvenih brojeva.

unique_numbers = [1, 2, 3, 4] 

Postoji nekoliko načina za dobivanje popisa jedinstvenih vrijednosti u Pythonu. Ovaj članak će vam pokazati kako.

1. opcija - Korištenje seta za dobivanje jedinstvenih elemenata

Koristeći setjedan način za to. Skup je koristan jer sadrži jedinstvene elemente.

Možete koristiti set da biste dobili jedinstvene elemente. Zatim pretvorite set u popis.

Pogledajmo dva pristupa koja koriste skup i popis. Prvi je pristup opširan, ali korisno je vidjeti što se događa na svakom koraku.

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] 

Pogledajmo izbliza što se događa. Ja sam dao popis brojeva numbers. Ja proći ovaj popis u funkciju, get_unique_numbers.

Unutar funkcije kreiram prazan popis koji će na kraju sadržavati sve jedinstvene brojeve. Zatim pomoću a setdobivam jedinstvene brojeve s numberspopisa.

unique_numbers = set(numbers) 

Imam ono što trebam: jedinstvene brojeve. Sada te vrijednosti moram unijeti na popis. Da bih to učinio, koristim petlju for da prelistavam svaki broj u skupu.

for number in unique_numbers: list_of_unique_numbers.append(number) 

Na svakoj iteraciji dodam trenutni broj na popisu, list_of_unique_numbers. Napokon, vraćam ovaj popis na kraju programa.

Postoji kraći način korištenja skupa i popisa za dobivanje jedinstvenih vrijednosti u Pythonu. To ćemo riješiti sljedeće.

Kraći pristup sa setom

Sav kod napisan u gornjem primjeru može se sažeti u jedan redak uz pomoć Pythonovih ugrađenih funkcija.

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

Iako se ovaj kod jako razlikuje od prvog primjera, ideja je ista. Upotrijebite set da biste dobili jedinstvene brojeve. Zatim pretvorite set u popis.

unique_numbers = list(set(numbers)) 

Korisno je razmišljati "iznutra" kad čitate gornji kod. Unutarnja šifra dobiva ocjenjuje prvi: set(numbers). Zatim, najudaljeniji kod ocjenjuje: list(set(numbers)).

Opcija 2 - Korištenje iteracije za prepoznavanje jedinstvenih vrijednosti

Iteracija je drugi pristup koji treba razmotriti.

Glavna ideja je stvoriti prazan popis koji će sadržavati jedinstvene brojeve. Zatim upotrijebite for it ponavljanje preko svakog broja na danom popisu. Ako je broj već na jedinstvenom popisu, prijeđite na sljedeću iteraciju. U suprotnom, dodajte mu broj.

Pogledajmo dva načina korištenja iteracije za dobivanje jedinstvenih vrijednosti na popisu, počevši od one opširnije.

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] 

Evo što se događa na svakom koraku. Prvo, ja sam dao popis brojeva numbers. Ja proći ovaj popis u moju funkciju, get_unique_numbers.

Unutar funkcije, mogu stvoriti prazan list, unique. Na kraju će ovaj popis sadržavati sve jedinstvene brojeve.

Koristim petlju for da bih prelistavao svaki broj na numberspopisu.

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

Uvjetnik unutar petlje provjerava je li broj trenutne iteracije na uniquepopisu. Ako je tako, petlja se nastavlja na sljedeću iteraciju. U suprotnom, broj se dodaje na ovaj popis.

Evo važne točke: dodaju se samo jedinstveni brojevi. Nakon završetka petlje, vraćam se uniquekoji sadrži sve jedinstvene brojeve.

Kraći pristup s ponavljanjem

Postoji još jedan način za pisanje funkcije u manje redaka.

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] 

Razlika je uvjetna. Ovaj put je postavljen za čitanje ovako: ako broj nije unique, dodajte ga.

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

Inače, petlja se pomiče na sljedeći broj na popisu, numbers.

Rezultat je isti. Međutim, ponekad je teže razmišljati i čitati kod kad je logička vrijednost negirana.

Postoje i drugi načini za pronalaženje jedinstvenih vrijednosti na popisu Python. No vjerojatno ćete se zateći za jednim od pristupa obrađenih u ovom članku.

Pišem o učenju programiranja i najboljim načinima za to na amymhaddad.com. Slijedite me na Twitteru: @amymhaddad.