Přejít na hlavní obsah

Python: jak odstranit duplikáty ze seznamu?

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.