Рубрики
Без рубрики

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

Как удалить дубликаты из списка в Python. Мы можем использовать функцию Set (), временный список, функцию понимания списка и счетчика () для удаления дубликатов.

Автор оригинала: Pankaj Kumar.

Есть много способов удалить дубликаты из списка Python.

  • Использование временного списка и цикла
  • Использование Set () Встроенный метод
  • Использование Словарь Ключи
  • Функция подсчета списка ()
  • Список понимания

Удаление дубликатов из списка

Список Python может содержать дубликаты элементов. Давайте посмотрим на примеры удаления дубликатов элементов по-разному.

1. Использование временного списка

Это способ Brute-Force для удаления дубликатов элементов из списка. Мы создадим временный список и добавление элементов к нему только в том случае, если оно нет.

ints_list = [1, 2, 3, 4, 3, 2]

temp = []

for x in ints_list:
    if x not in temp:
        temp.append(x)

ints_list = temp

print(f'Updated List after removing duplicates = {temp}')

Выход : Обновленный список после удаления дубликатов = [1, 2, 3, 4]

Рекомендуемое чтение : Python F-струны

2. Установите () Функция

Набор Python не имеет дублирующих элементов. Мы можем использовать функцию встроенного SET () для преобразования списка в набор, затем используйте функцию списка (), чтобы преобразовать его обратно в список.

ints_list = [1, 2, 3, 4, 3, 2]

ints_list1 = list(set(ints_list))
print(ints_list1)  # [1, 2, 3, 4]

3. Список элементов как словарные ключи

Мы знаем, что словарные ключи уникальны. Класс Dict имеет функцию pruekeys (), которая принимает счетчику для создания словаря с ключами от Iterable.

ints_list = [1, 2, 3, 4, 3, 2]

ints_list2 = list(dict.fromkeys(ints_list))
print(ints_list2)  # [1, 2, 3, 4]

4. Функция подсчета списка () – не рекомендуется

Метод подсчета списка () возвращает количество вхождений значения. Мы можем использовать его с помощью метода удаления () для устранения дубликатов элементов из списка.

ints_list = [1, 2, 3, 4, 3, 2]

for x in ints_list:
    if ints_list.count(x) > 1:
        ints_list.remove(x)
print(ints_list)  # [1, 2, 3, 4]

Примечание. Как указано в следующем комментарии, использование функции COUNT () не рекомендуется при удалении элемента из одного и того же итератора, потому что он может привести к нежелательным результатам.

Например:

values = [87, 94, 45, 94, 94, 41, 65, 94, 41, 99, 94, 94, 94]

for x in values:
    if values.count(x) > 1:
        values.remove(x)
print(values)  # [87, 45, 65, 41, 99, 94, 94] - 94 is still present twice

5. Список понимания

Мы можем создать список из намерения с использованием понимания списка. Эта техника такая же, как использование временного списка и цикла для удаления дубликатов элементов. Но это уменьшает количество строк кода.

int_list = [1, 2, 3, 4, 3, 2]
temp = []
[temp.append(x) for x in ints_list if x not in temp]
print(temp)  # [1, 2, 3, 4]

Лучший способ удалить дубликаты из списка

Если вы не хотите дубликаты элементов, вы должны использовать набор. Но, если вам нужно удалить дубликаты значения из списка, то я бы предпочел функцию Count (), потому что она не создает другой временный набор или объект списка. Итак, это больше памяти эффективен.