Как удалить дубликаты из списка Python: 8 проверенных способов
Список — базовая структура данных Python, хранящая упорядоченную коллекцию элементов: целых чисел, строк, пользовательских объектов. Это аналог массива в других языках.
Ниже представлены проверенные техники удаления дубликатов с сохранением порядка и читаемости.
- Удаление дублей через set
- Удаление дублей через временный список
- Удаление дублей через OrderedDict (или dict.fromkeys)
- Удаление дублей простым for-циклом
- Удаление дублей через list comprehension
- Удаление дублей с NumPy unique()
- Удаление дублей с Pandas unique()
- Удаление дублей через enumerate() и list comprehension
Удаление дублей через set
Встроенная функция set() убирает дубликаты, возвращая только уникальные элементы. Конвертируйте список в set, затем обратно в список.
my_list = [1,1,2,3,2,2,4,5,6,2,1] my_final_list = set(my_list) print(list(my_final_list))
Вывод:
[1, 2, 3, 4, 5, 6]
Удаление дублей через временный список
Создаём пустой список, перебираем исходный и добавляем только невидимые ранее элементы.
my_list = [1, 2, 3, 1, 2, 4, 5, 4 ,6, 2]
print("List Before ", my_list)
temp_list = []
for i in my_list:
if i not in temp_list:
temp_list.append(i)
my_list = temp_list
print("List After removing duplicates ", my_list)
Вывод:
List Before [1, 2, 3, 1, 2, 4, 5, 4, 6, 2] List After removing duplicates [1, 2, 3, 4, 5, 6]
Удаление дублей через OrderedDict (или dict.fromkeys)
Начиная с Python 3.5+, обычный dict сохраняет порядок вставки, поэтому dict.fromkeys() можно использовать для сохранения уникальных значений в порядке.
my_list = ['a','x','a','y','a','b','b','c'] my_final_list = dict.fromkeys(my_list) print(list(my_final_list))
Вывод:
['a', 'x', 'y', 'b', 'c']
Удаление дублей простым for-циклом
Проходим по списку, добавляя в новый список только те элементы, которых там ещё нет.
my_list = [1,2,2,3,1,4,5,1,2,6]
myFinallist = []
for i in my_list:
if i not in myFinallist:
myFinallist.append(i)
print(myFinallist)
Вывод:
[1, 2, 3, 4, 5, 6]
Удаление дублей через list comprehension
List comprehensions дают лаконичный синтаксис с сохранением читаемости.
my_list = [1,2,2,3,1,4,5,1,2,6] my_finallist = [] [my_finallist.append(n) for n in my_list if n not in my_finallist] print(my_finallist)
Вывод:
[1, 2, 3, 4, 5, 6]
Удаление дублей с NumPy unique()
Функция NumPy unique() возвращает отсортированные уникальные элементы массива.
import numpy as np my_list = [1,2,2,3,1,4,5,1,2,6] myFinalList = np.unique(my_list).tolist() print(myFinalList)
Вывод:
[1, 2, 3, 4, 5, 6]
Удаление дублей с Pandas unique()
Аналогично, Pandas предлагает лёгкий метод unique() для спископодобных объектов.
import pandas as pd my_list = [1,2,2,3,1,4,5,1,2,6] myFinalList = pd.unique(my_list).tolist() print(myFinalList)
Вывод:
[1, 2, 3, 4, 5, 6]
Удаление дублей через enumerate() и list comprehension
Комбинация enumerate() с list comprehension позволяет удалить дубликаты, сохраняя первое вхождение каждого элемента.
my_list = [1,2,2,3,1,4,5,1,2,6] my_finallist = [i for j, i in enumerate(my_list) if i not in my_list[:j]] print(my_finallist)
Вывод:
[1, 2, 3, 4, 5, 6]
Резюме
set()— самый быстрый способ убрать дубликаты, но не сохраняет порядок.- Временные списки или for-циклы сохраняют исходный порядок, но менее лаконичны.
- Упорядоченные словари или
dict.fromkeys()сохраняют порядок и очень эффективны. - NumPy и Pandas дают однострочные решения для числовых или DataFrame-интенсивных рабочих процессов.
- List comprehensions с
enumerate()предлагают функциональный стиль, читаемый и сохраняющий порядок.
Python
- Освоение типов данных в Python: практическое руководство
- Мастерство операторов Python: Полное руководство
- Оператор pass в Python: практическое руководство
- Аргументы функций в Python: позиционные, именованные и параметры по умолчанию
- Освоение функции range() в Python: от основ к продвинутым сценариям
- Мастерство работы со списками Python: append, sort, len и list comprehensions — практическое руководство
- Вычисление среднего значения в Python: практическое руководство
- Python list.count(): экспертное руководство с практическими примерами
- Как удалять элементы из списка Python: remove(), pop(), clear() и del
- Python list.index(): как находить позиции элементов — практические примеры