Python Unique List - So erhalten Sie alle eindeutigen Werte in einer Liste oder einem Array

Angenommen, Sie haben eine Liste mit doppelten Nummern:

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

Sie möchten jedoch eine Liste eindeutiger Nummern.

unique_numbers = [1, 2, 3, 4] 

Es gibt verschiedene Möglichkeiten, eine Liste eindeutiger Werte in Python abzurufen. Dieser Artikel zeigt Ihnen, wie.

Option 1 - Verwenden eines Sets zum Abrufen eindeutiger Elemente

Verwenden Sie eine setEinbahnstraße, um dies zu erreichen. Ein Set ist nützlich, weil es eindeutige Elemente enthält.

Sie können ein Set verwenden, um die eindeutigen Elemente abzurufen. Verwandeln Sie das Set dann in eine Liste.

Schauen wir uns zwei Ansätze an, die eine Menge und eine Liste verwenden. Der erste Ansatz ist ausführlich, aber es ist nützlich zu sehen, was bei jedem Schritt des Weges passiert.

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] 

Schauen wir uns genauer an, was passiert. Ich habe eine Liste mit Zahlen numbers. Ich übergebe diese Liste an die Funktion get_unique_numbers.

Innerhalb der Funktion erstelle ich eine leere Liste, die schließlich alle eindeutigen Nummern enthält. Dann benutze ich a set, um die eindeutigen Nummern aus der numbersListe zu erhalten.

unique_numbers = set(numbers) 

Ich habe was ich brauche: die eindeutigen Zahlen. Jetzt muss ich diese Werte in eine Liste aufnehmen. Dazu benutze ich eine for-Schleife, um jede Zahl im Satz zu durchlaufen.

for number in unique_numbers: list_of_unique_numbers.append(number) 

Bei jeder Iteration füge ich die aktuelle Nummer zur Liste hinzu list_of_unique_numbers. Schließlich gebe ich diese Liste am Ende des Programms zurück.

Es gibt eine kürzere Möglichkeit, einen Satz und eine Liste zu verwenden, um eindeutige Werte in Python zu erhalten. Das werden wir als nächstes angehen.

Ein kürzerer Ansatz mit Set

Der gesamte im obigen Beispiel geschriebene Code kann mithilfe der in Python integrierten Funktionen in einer Zeile zusammengefasst werden.

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

Obwohl dieser Code sehr vom ersten Beispiel abweicht, ist die Idee dieselbe. Verwenden Sie einen Satz, um die eindeutigen Zahlen zu erhalten. Verwandeln Sie das Set dann in eine Liste.

unique_numbers = list(set(numbers)) 

Es ist hilfreich, beim Lesen des obigen Codes „von innen nach außen“ zu denken. Der innerste Code wird zuerst ausgewertet : set(numbers). Dann wird der äußerste Code ausgewertet : list(set(numbers)).

Option 2 - Verwenden der Iteration zum Identifizieren eindeutiger Werte

Iteration ist ein weiterer zu berücksichtigender Ansatz.

Die Hauptidee besteht darin, eine leere Liste mit eindeutigen Nummern zu erstellen. Verwenden Sie dann eine for-Schleife, die über jede Zahl in der angegebenen Liste iteriert. Wenn die Nummer bereits in der eindeutigen Liste enthalten ist, fahren Sie mit der nächsten Iteration fort. Andernfalls fügen Sie die Nummer hinzu.

Schauen wir uns zwei Möglichkeiten an, wie Sie mithilfe der Iteration die eindeutigen Werte in einer Liste abrufen können, beginnend mit der ausführlicheren.

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] 

Hier ist, was bei jedem Schritt des Weges passiert. Zuerst bekomme ich eine Liste mit Zahlen numbers. Ich übergebe diese Liste an meine Funktion get_unique_numbers.

Innerhalb der Funktion erstelle ich eine leere Liste unique. Schließlich enthält diese Liste alle eindeutigen Nummern.

Ich benutze eine for-Schleife, um jede Zahl in der numbersListe zu durchlaufen .

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

Die Bedingung innerhalb der Schleife prüft, ob die Nummer der aktuellen Iteration in der uniqueListe enthalten ist. In diesem Fall fährt die Schleife mit der nächsten Iteration fort. Andernfalls wird die Nummer zu dieser Liste hinzugefügt.

Hier ist der wichtige Punkt: Es werden nur die eindeutigen Nummern hinzugefügt. Sobald die Schleife abgeschlossen ist, kehre ich zurück, uniquedie alle eindeutigen Zahlen enthält.

Ein kürzerer Ansatz mit Iteration

Es gibt eine andere Möglichkeit, die Funktion in weniger Zeilen zu schreiben.

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] 

Der Unterschied ist die Bedingung. Diesmal ist es so eingerichtet: Wenn die Nummer nicht vorhanden ist unique, fügen Sie sie hinzu.

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

Andernfalls bewegt sich die Schleife zur nächsten Nummer in der Liste numbers.

Das Ergebnis ist das gleiche. Es ist jedoch manchmal schwieriger, über Code nachzudenken und ihn zu lesen, wenn der Boolesche Wert negiert wird.

Es gibt andere Möglichkeiten, eindeutige Werte in einer Python-Liste zu finden. Aber Sie werden wahrscheinlich nach einem der in diesem Artikel behandelten Ansätze greifen.

Ich schreibe auf amymhaddad.com über das Erlernen des Programmierens und die besten Möglichkeiten, dies zu tun. Folgen Sie mir auf Twitter: @amymhaddad.