Python je oblíbený programovací jazyk, který se široce používá k vývoji různých aplikací a skriptů. Jedním z často se vyskytujících úkolů v programování je odstranění duplikátů ze seznamu. Přítomnost duplicitních prvků může zpomalit zpracování dat a vést k nesprávným výsledkům.
V jazyce Python existuje několik způsobů, jak odstranit duplikáty ze seznamu. Jedním z nich je využití funkce set(). Set je neuspořádaná sbírka jedinečných prvků. Při převodu seznamu na množinu pomocí funkce set(), všechny duplikáty budou automaticky odstraněny.
Pokud potřebujete uložit pořadí položek v seznamu, můžete použít jinou metodu-pomocí generátoru seznamů a podmínek if. V takovém případě můžete vytvořit nový seznam, který bude obsahovat pouze jedinečné položky z původního seznamu.
K odstranění duplikátů ze seznamu čísel lze například použít následující kód:
numbers = [1, 2, 3, 3, 4, 5, 5]
unique_numbers = [x for i, x in enumerate(numbers) if x not in numbers[:i]]
V důsledku provádění tohoto kódu v proměnné unique_numbers bude obsahovat nový seznam, který bude obsahovat pouze jedinečné položky z původního seznamu numbers.
Jak odstraním duplikáty ze seznamu v Pythonu?
Při práci s daty v Pythonu je často nutné odstranit duplikáty ze seznamu. Duplicity mohou být nejen nežádoucí, ale také mohou způsobit problémy se zpracováním dat. Existuje několik způsobů, jak odstranit duplikáty ze seznamu v Pythonu.
1. Použití množiny:
my_list = [1, 2, 3, 3, 4, 4, 5]my_list = list(set(my_list))
2. Použití metody list.name (v daném případě sorted):
my_list = [1, 2, 3, 3, 4, 4, 5]my_list = list(sorted(set(my_list)))
3. Použití generátoru seznamu:
my_list = [1, 2, 3, 3, 4, 4, 5]my_list = list(dict.fromkeys(my_list))
4. Použití metody remove (platí pouze tehdy, je-li důležitý řád prvků):
my_list = [1, 2, 3, 3, 4, 4, 5]new_list = [][new_list.append(i) for i in my_list if i not in new_list]
5. Použití metody filterfalse z knihovny itertools (pro Python 3.7 a vyšší):
from itertools import filterfalsemy_list = [1, 2, 3, 3, 4, 4, 5]my_list = list(filterfalse(lambda x: my_list.count(x) > 1, my_list))
Vyberte způsob, jak odstranit duplikáty ze seznamu v Pythonu, který je pro váš úkol nejvhodnější a umožňuje dosáhnout požadovaného výsledku.
Jaké metody lze použít k odstranění duplikátů v Pythonu?
Python má několik způsobů, jak odstranit duplikáty ze seznamu:
-
Využití množiny. Seznam lze převést na mnoho pomocí funkce set (), což způsobí, že všechny duplikáty budou automaticky odstraněny:
my_list = [1, 2, 3, 2, 1]unique_list = list(set(my_list))print(unique_list) # [1, 2, 3]
my_list = [1, 2, 3, 2, 1]unique_list = [][unique_list.append(x) for x in my_list if x not in unique_list]print(unique_list) # [1, 2, 3]
my_list = [1, 2, 3, 2, 1]for x in my_list:while my_list.count(x) > 1:my_list.remove(x)print(my_list) # [1, 2, 3]
my_list = [1, 2, 3, 2, 1]unique_list = list(filter(lambda x: my_list.count(x) == 1, my_list))print(unique_list) # [3]
Výběr metody závisí na konkrétní situaci a požadavcích na výkon. Je důležité si uvědomit, že použití množiny A seznamu může změnit pořadí položek v seznamu, na rozdíl od metody remove() a funkce filter().
Metoda 1: použití vestavěné funkce set k odstranění duplikátů
Zde je příklad kódu, který ukazuje použití funkce set k odstranění duplikátů:
my_list = [1, 2, 3, 3, 4, 5, 5, 6]my_list = list(set(my_list))print(my_list)
V tomto příkladu vytvoříme seznam my_list, který obsahuje několik duplikátů. Poté jej převedeme na množinu pomocí funkce set k odstranění duplikátů. Nakonec spoustu převedeme zpět na seznam pomocí funkce list a výsledný seznam vytvoříme bez duplikátů.
Výsledek provádění tohoto kódu bude následující:
[1, 2, 3, 4, 5, 6]
Jak vidíte, všechny duplikáty byly úspěšně odstraněny a v konečném seznamu zůstaly pouze jedinečné položky.
Metoda 2: Použití cyklu for k odstranění duplikátů
Zde je příklad kódu:
# Původní seznam my_list = [12324514678975321] # Vytvořte nový seznam new_list = [] # Procházíme prvky původního seznamu for i in my_list: # Ověřujeme, zda již taková položka v novém seznamu existuje if i not in new_list: # Pokud ne, přidejte položku do nového seznamu new_list.append(i) # Přinášíme nový seznam bez duplikátů print(new_list)
V důsledku provádění tohoto kódu získáme nový seznam [123456789] , ve kterém byly odstraněny všechny duplikáty z původního seznamu.
Metoda 3: Použití knihovny pandas k odstranění duplikátů
Knihovna pandas poskytuje výkonné nástroje pro analýzu dat v Pythonu, včetně možnosti Odstranit duplikáty ze seznamu. Chcete-li to provést, musíte převést seznam na objekt série a poté použít metodu drop_duplicates().
Zde je příklad kódu, který ukazuje použití knihovny pandas k odstranění duplikátů ze seznamu:
import pandas as pd
# Původní seznam s duplikáty
my_list = [1, 2, 3, 1, 2, 3, 4, 5]
# Převod seznamu na objekt Series
print(unique_list.tolist()) # [1, 2, 3, 4, 5]
V tomto příkladu nejprve importujeme knihovnu pandas pod pseudonymem pd. Poté vytvoříme původní seznam my_list s duplikáty. Dále jej převedeme na objekt řady pomocí funkce pd.Series(). Poté použijeme metodu drop_duplicates () na objekt Series k odstranění duplikátů. Výsledek je uložen v proměnné unique_list a poté jej vyvedeme převodem zpět na seznam pomocí metody tolist().
Pomocí knihovny pandas tedy můžete snadno odstranit duplikáty ze seznamu a získat pouze jedinečné hodnoty.