Как удалить дубликаты из списка в Python
⚡ Умное резюме
Удаление дубликатов из Python Для работы со списками можно использовать несколько встроенных подходов, включая set(), dict.fromkeys(), циклы, списковые выражения и библиотечные методы из NumPy и Pandas, каждый из которых обеспечивает баланс между сохранением порядка и скоростью.
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) Использование временного списка
Для удаления дубликатов из заданного списка можно использовать пустой временный список. Для этого сначала нужно пройтись по списку, содержащему дубликаты, и добавить уникальные элементы во временный список. 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 из библиотеки collections. Он доступен начиная с Python 2.7. OrderedDict возвращает уникальные элементы в том порядке, в котором присутствует ключ.
Давайте воспользуемся списком и методом fromkeys() из класса OrderedDict, чтобы получить уникальные элементы из списка.
Для использования метода OrderedDict.fromkeys() необходимо импортировать класс 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 сначала импортируйте модуль numpy:
Шаг 1) Импортируйте модуль NumPy.
import numpy as np
Шаг 2) Используйте список с дубликатами внутри метода unique(). Результат преобразуется обратно в список с помощью метода 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()` для удаления повторяющихся элементов. Функция `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]

