Промышленное производство
Промышленный Интернет вещей | Промышленные материалы | Техническое обслуживание и ремонт оборудования | Промышленное программирование |
home  MfgRobots >> Промышленное производство >  >> Industrial programming >> Python

Как удалить дубликаты из списка Python: 8 проверенных способов

Список — базовая структура данных Python, хранящая упорядоченную коллекцию элементов: целых чисел, строк, пользовательских объектов. Это аналог массива в других языках.

Ниже представлены проверенные техники удаления дубликатов с сохранением порядка и читаемости.

Удаление дублей через 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]

Резюме

Python

  1. Освоение типов данных в Python: практическое руководство
  2. Мастерство операторов Python: Полное руководство
  3. Оператор pass в Python: практическое руководство
  4. Аргументы функций в Python: позиционные, именованные и параметры по умолчанию
  5. Освоение функции range() в Python: от основ к продвинутым сценариям
  6. Мастерство работы со списками Python: append, sort, len и list comprehensions — практическое руководство
  7. Вычисление среднего значения в Python: практическое руководство
  8. Python list.count(): экспертное руководство с практическими примерами
  9. Как удалять элементы из списка Python: remove(), pop(), clear() и del
  10. Python list.index(): как находить позиции элементов — практические примеры