Автор оригинала: 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 (), потому что она не создает другой временный набор или объект списка. Итак, это больше памяти эффективен.