Как удалить дубликаты из списка в Python

Python удалить дубликаты из списка

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

Итак, здесь мы рассмотрим различные способы удаления дубликатов из заданного списка в Python.

Способ 1) Удалить дубликаты из списка с помощью Set

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

У нас есть список: [1,1,2,3,2,2,4,5,6,2,1]. В списке много дубликатов, которые нам нужно удалить и вернуть только отдельные элементы. Список передается set() встроенная функция. Later окончательный список отображается с помощью list() встроенная функция, как показано в примере ниже.


На выходе мы получаем отдельные элементы, из которых исключены все повторяющиеся элементы.
Пример

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]

Способ 2) Использование временного списка

Чтобы удалить дубликаты из данного list, вы можете использовать пустой временный список. Для этого сначала вам придется просмотреть список, содержащий дубликаты, и добавить уникальные элементы во временный список. Later временный список присваивается основному списку.

Пример
Вот рабочий пример использования временного списка.

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]

Способ 3) Использование Dict

Мы можем удалить дубликаты из данного списка, импортировав OrderedDict из коллекций. Он доступен начиная с Python2.7. OrderedDict позаботится о том, чтобы вернуть вам отдельные элементы в том порядке, в котором присутствует ключ.

Давайте воспользуемся списком и воспользуемся fromkeys() метод, доступный в OrderedDict, для получения уникальных элементов из списка.

Чтобы использовать OrderedDict.fromkey() вам необходимо импортировать OrderedDict из коллекций, как показано ниже:

from collections import OrderedDict

Вот пример удаления дубликатов с помощью OrderedDict.fromkeys() метод.

Пример

from collections import OrderedDict

my_list = ['a','x','a','y','a','b','b','c']

my_final_list = OrderedDict.fromkeys(my_list)

print(list(my_final_list))

Вывод:

['a', 'x', 'y', 'b', 'c']

от Python 3.5+ и выше, мы можем использовать обычный dict.fromkeys() чтобы получить отдельные элементы из списка. dict.fromkeys() методы возвращают уникальные ключи и помогают избавиться от повторяющихся значений.

Пример, демонстрирующий работу 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']

Способ 4) Использование цикла for

. для цикла, мы пройдемся по списку элементов, чтобы удалить дубликаты.

Сначала инициализируйте массив пустым, т.е. myFinallist = [].Внутри цикла for добавьте проверку, существуют ли элементы списка в массиве. myFinallist. Если элементы не существуют, добавьте элемент в массив myFinallist, используя команду append() метод.

Таким образом, всякий раз, когда встречается повторяющийся элемент, он уже присутствует в массиве myFinallist и не будет вставлен. Давайте теперь проверим то же самое на примере ниже:

Пример

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(list(myFinallist))

Вывод:

[1, 2, 3, 4, 5, 6]

Метод 5) Использование понимания списка

Понимание списков Python функции, используемые для создания новых последовательностей (например, списков, словарей и т. д.) с использованием уже созданных последовательностей. Это поможет вам сократить длинные циклы и упростить чтение и поддержку вашего кода.

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

Пример

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]

Метод 6) Использование метода Numpy unique().

Способ unique() из модуля Numpy может помочь нам удалить дубликаты из данного списка.

Чтобы работать с модулем Numpy first import numpy, вам необходимо выполнить следующие шаги:

Шаг 1) Импортировать модуль Numpy

import numpy as np

Шаг 2) Используйте свой список с дубликатами внутри уникального метода, как показано ниже. Вывод преобразуется обратно в формат списка с помощью tolist() метод.

myFinalList = np.unique(my_list).tolist()

Шаг 3) Наконец, распечатайте список, как показано ниже:

print(myFinalList)

Окончательный код с выводом выглядит следующим образом:

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]

Способ 7) Использование методов Pandas

Модуль Pandas имеет unique() метод, который даст нам уникальные элементы из данного списка.

Для работы с модулем Pandas вам необходимо выполнить следующие действия:

Шаг 1) Импортировать модуль Pandas

import pandas as pd

Шаг 2) Используйте свой список с дубликатами внутри unique() метод, как показано ниже:

myFinalList = pd.unique(my_list).tolist()

Шаг 3) Распечатайте список, как показано ниже:

print(myFinalList)

Окончательный код с выводом выглядит следующим образом:

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]

Метод 8) Использование enumerate() и понимания списка

Здесь комбинация понимания списка и перечисления для удаления повторяющихся элементов. Enumerate возвращает объект со счетчиком для каждого элемента в списке. Например (0,1), (1,2) и т. д. Здесь первое значение — это индекс, а второе значение — элемент списка. Вт

Каждый элемент проверяется, существует ли он в списке, и если есть, он удаляется из списка.

Пример

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(list(my_finallist))

Вывод:

[1, 2, 3, 4, 5, 6]

Итого

  • Чтобы удалить дубликаты из списка, вы можете использовать встроенную функцию set(). Специальность set() заключается в том, что он возвращает отдельные элементы.
  • Вы можете удалить дубликаты из данного списка, импортировав OrderedDictfrom коллекции. Он доступен начиная с Python2.7. OrderedDictdict позаботится о том, чтобы вернуть вам отдельные элементы в том порядке, в котором присутствует ключ.
  • Вы можете использовать цикл for, который будет проходить по списку элементов для удаления дубликатов.
  • Способ unique() из модуля Numpy может помочь нам удалить дубликаты из данного списка.
  • Модуль Pandas имеет unique() метод, который даст нам уникальные элементы из данного списка.
  • Комбинация понимания списка и перечисления используется для удаления повторяющихся элементов из списка. Enumerate возвращает объект со счетчиком для каждого элемента в списке.