Jak usunąć duplikaty z listy w Pythonie
Dowiedz się, jak usunąć duplikaty z listy w Pythonie, zachowując lub ignorując porządek. Porównaj konwersje zestawów, klawisze dyktowania i metody pętli.
Przegląd
Zduplikowane dane często wkradają się na listy poprzez pobieranie baz danych, interakcje użytkowników lub agregacje dzienników. Usunięcie tych duplikatów to podstawowy etap czyszczenia danych, który zapewnia unikalność i zapobiega redundancji w logice dalszego ciągu. Python udostępnia kilka technik umożliwiających osiągnięcie tego celu, począwszy od szybkich konwersji zestawów po operacje oparte na pętlach, które uwzględniają kolejność elementów.
Najszybszym i najczęstszym sposobem wyeliminowania zduplikowanych elementów jest przekształcenie listy w „zestaw” za pomocą konstruktora „set()”, a następnie przekształcenie jej z powrotem w listę. Ponieważ zestawy nie mogą zawierać zduplikowanych wartości, proces ten automatycznie odrzuca duplikaty. Wadą tego podejścia jest to, że zbiory są nieuporządkowane, co oznacza, że pierwotna sekwencja elementów zostaje utracona.
Aby zachować oryginalną kolejność elementów podczas usuwania duplikatów,Python 3.7+ oferuje sprytne rozwiązanie wykorzystujące wbudowaną klasę słownika: `list(dict.fromkeys(my_list))`. Ponieważ klucze słownika są unikalne i zachowują kolejność wstawiania, ta metoda skutecznie usuwa duplikaty elementów, zachowując nienaruszoną sekwencję. W przypadku kryteriów niestandardowych lub starszych wersji Pythona bardzo skuteczna jest również ręczna pętla wykorzystująca zestaw pomocniczy do śledzenia widzianych elementów.
Dane wyjściowe kodu i wykonania
Ten skrypt demonstruje deduplikację elementów listy przy użyciu zestawów, kluczy słownikowych i pętli ręcznych.
numbers = [2, 1, 2, 3, 1, 4]
# Method 1: Using set() (Unordered)
unique_unordered = list(set(numbers))
print("Unordered unique:", unique_unordered)
# Method 2: Using dict.fromkeys() (Preserves order)
unique_ordered = list(dict.fromkeys(numbers))
print("Ordered unique:", unique_ordered)
# Method 3: Using a loop with a seen helper
seen = set()
unique_loop = []
for item in numbers:
if item not in seen:
seen.add(item)
unique_loop.append(item)
print("Loop unique:", unique_loop)Unordered unique: [1, 2, 3, 4]
Ordered unique: [2, 1, 3, 4]
Loop unique: [2, 1, 3, 4]Wdrażanie krok po kroku
- Przekonwertuj listę na zestaw, aby natychmiast usunąć duplikaty za pomocą set(my_list).
- Użyj list(dict.fromkeys(my_list)), aby usunąć duplikaty, zachowując kolejność wstawiania.
- Użyj zestawu pomocniczego w pętli, aby odfiltrować duplikaty, jeśli potrzebujesz niestandardowej weryfikacji.
Często zadawane pytania
Która metoda jest najszybsza w przypadku dużych list?
Konwersja na zestaw jest najszybsza dzięki optymalizacji na poziomie C, a zaraz po niej następuje dict.fromkeys().
Jak zdeduplikować listę słowników?
Ponieważ słowniki nie podlegają haszowaniu, nie można bezpośrednio używać zestawów. Musisz użyć pętli lub filtrowania ze zrozumieniem listy według unikalnych identyfikatorów/kluczy.
Powiązane tematy
Dowiedz się, jak sortować listę w Pythonie za pomocą metody sort() i funkcji sorted(). Odkryj przykłady niestandardowego sortowania kluczy i odwrotnej kolejności.
Jak korzystać ze zrozumienia list w PythonieDowiedz się, jak używać wyrażeń listowych w Pythonie. Twórz zwięzłe pętle, stosuj filtry warunkowe i buduj macierze z przejrzystą składnią wizualną.
Polecane zasoby Pythona
Poszerzaj swoją wiedzę dzięki powiązanym interaktywnym samouczkom, ściągawkom i porównaniom kodów.
Listy Pythona
Dowiedz się wszystkiego o listach w Pythonie. Odkryj, jak tworzyć, wycinać, modyfikować i iterować po tablicach natywnie w języku Python.
Ściągawka dotycząca metod listy Pythona
Skrócona instrukcja obsługi operacji na listach w języku Python. Opanuj dodawanie, wstawianie, usuwanie, sortowanie i cięcie elementów.
Python kontra JavaScript: który język programowania jest najlepszy?
Kompleksowe porównanie Pythona i JavaScript. Poznaj różnice w składni, wydajność, przypadki użycia (backend vs frontend) i przykłady kodowania.