Удаление дубликатов из списка в Python

Удаление дубликатов из списка в Python Статьи

Введение

В данной статье рассмотрим 5 способов удаления дубликатов из списка в Python.

Удаление дубликатов из списка с помощью генератора

Для начала создадим список:

test_list = [4, 9, 9, 8, 6, 4, 4, 5, 5, 2, 3, 8, 4, 10]

print(f"Начальный вид списка : {test_list}")

Далее мы создадим пустой список, в котором не будет дубликатов:

test_list = [4, 9, 9, 8, 6, 4, 4, 5, 5, 2, 3, 8, 4, 10]

print(f"Начальный вид списка: {test_list}")

new_list = []
[new_list.append(x) for x in test_list if x not in new_list]

print(f"Список без дубликатов: {new_list}")

# Вывод:
# Начальный вид списка : [4, 9, 9, 8, 6, 4, 4, 5, 5, 2, 3, 8, 4, 10]
# Список после удаления дубликатов : [4, 9, 8, 6, 5, 2, 3, 10]

Внутри генератора мы пополняем новый список, исключая дубликаты находящиеся в изначальном списке с помощью условия.

Дословное условие: Если элемента итерации нет в new_list, то он добавляется в new_list.

Удаление дубликатов из списка с помощью генератора списка, и метода enumerate()

Вместо условия в генераторе можно использовать метод enumerate(), который найдёт существующие элементы, и пропустит их при добавлении в новый список:

test_list = [4, 9, 9, 8, 6, 4, 4, 5, 5, 2, 3, 8, 4, 10]

print(f"Начальный вид списка: {test_list}")

new_list = [i for n, i in enumerate(test_list) if i not in test_list[:n]]

print(f"Список без дубликатов: {new_list}")

# Вывод:
# Начальный вид списка : [4, 9, 9, 8, 6, 4, 4, 5, 5, 2, 3, 8, 4, 10]
# Список после удаления дубликатов : [4, 9, 8, 6, 5, 2, 3, 10]

Удаление дубликатов из списка с помощью цикла for

Генератор это по сути цикл внутри списка, но мы можем вместо генератора пойти по более длинному пути, и использовать цикл вне списка:

test_list = [4, 9, 9, 8, 6, 4, 4, 5, 5, 2, 3, 8, 4, 10]

print(f"Начальный вид списка: {test_list}")

new_list = []
for i in test_list:
    if i not in new_list:
        new_list.append(i)

print(f"Список без дубликатов: {new_list}")

# Вывод:
# Начальный вид списка : [4, 9, 9, 8, 6, 4, 4, 5, 5, 2, 3, 8, 4, 10]
# Список после удаления дубликатов : [4, 9, 8, 6, 5, 2, 3, 10]

Удаление дубликатов из списка с помощью функции set()

Способ заключается в том, что с помощью метода set() мы преобразуем список в множество, получим уникальные значения, и сделаем из множества список.

test_list = [4, 9, 9, 8, 6, 4, 4, 5, 5, 2, 3, 8, 4, 10]

print(f"Начальный вид списка: {test_list}")

test_list = list(set(test_list))

print(f"Список без дубликатов: {test_list}")

# Вывод:
# Начальный вид списка : [4, 9, 9, 8, 6, 4, 4, 5, 5, 2, 3, 8, 4, 10]
# Список после удаления дубликатов : [2, 3, 4, 5, 6, 8, 9, 10]

Удаление дубликатов из списка с помощью метода fromkeys

В модуле collections есть класс OrderedDict, в котором есть метод fromkeys. Именно этот метод нам и понадобится! Для начала он удалит дубликаты, после чего вернёт словарь, который впоследствии мы преобразуем в список:

from collections import OrderedDict

test_list = [4, 9, 9, 8, 6, 4, 4, 5, 5, 2, 3, 8, 4, 10]
print(f"Начальный вид списка: {test_list}")

new_list = list(OrderedDict.fromkeys(test_list))

print(f"Список без дубликатов: {new_list}")

# Вывод:
# Начальный вид списка : [4, 9, 9, 8, 6, 4, 4, 5, 5, 2, 3, 8, 4, 10]
# Список после удаления дубликатов : [4, 9, 8, 6, 5, 2, 3, 10]

Заключение

В статье мы с Вами разобрали целых пять способов удаления дубликатов в списке в Python! Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂

Admin
Admin
IT Start