- Введение
- Удаление дубликатов из списка с помощью генератора
- Удаление дубликатов из списка с помощью генератора списка, и метода enumerate()
- Удаление дубликатов из списка с помощью цикла for
- Удаление дубликатов из списка с помощью функции set()
- Удаление дубликатов из списка с помощью метода fromkeys
- Заключение
Введение
В данной статье рассмотрим 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! Надеюсь Вам понравилась статья, желаю удачи и успехов! 🙂