В данном руководстве рассмотрим способы удаления дубликатов из списка в Python.
Способ 1: использование функций list() и dict.fromKeys()
Чтобы удалить дубликаты из списка в Python, вы можете использовать методы list() и dict.fromKeys(). Метод dict.fromKeys() удаляет повторяющиеся значения из словаря, а затем преобразует этот словарь в список.
Пример 1
|
1 2 3 4 |
GoT = ['Tony', 'Rocket', 'Scott', 'Steve', 'Rocket', 'Natasha', 'Tony'] mylist = list(dict.fromkeys(GoT)) print(mylist) |
Сначала мы создали словарь, используя элементы списка, такие как ключи. Метод словаря fromKeys() автоматически удаляет дубликаты, поскольку в структуре данных словаря не может быть повторяющихся ключей.
Последним шагом будет преобразование словаря в список. Теперь у нас есть список без каких-либо копий, который имеет тот же порядок, что и исходный список.
Распечатайте список, чтобы продемонстрировать результат.
Выход

Повторяющиеся элементы удалены, и вы получаете список уникальных элементов.
Вы даже можете создать для этого пользовательскую функцию и вызвать эту функцию с необходимыми параметрами, которые вернут различные значения списка.
Пример 2
|
1 2 3 4 5 6 |
def unique(data): return list(dict.fromkeys(data)) GoTB = ['Tony', 'Rocket', 'Scott', 'Steve', 'Rocket', 'Natasha', 'Tony'] finalList = unique(GoTB) print(finalList) |
Здесь мы написали логику внутри уникальной функции, которая возвращает уникальные значения списка. Следовательно, это даст нам тот же результат.
Мы использовали метод dict.fromKeys().
Способ 2: использование not in в списке
Мы можем использовать оператор «not in» в списке, чтобы найти повторяющиеся элементы.
Мы создаем список результатов и вставляем только те, которых нет в уникальном списке.
Выход
|
1 2 3 4 5 6 7 8 9 |
def duplicate(items): unique = [] for item in items: if item not in unique: unique.append(item) return unique GoT = ['Tony', 'Rocket', 'Scott', 'Steve', 'Rocket', 'Natasha', 'Tony'] print(duplicate(GoT)) |
Он дает тот же результат с уникальными значениями списка.
Способ 3: с помощью множества
Множество в Python не допускает дублирования значений. Итак, если мы передаем исходный список с повторяющимися значениями в set, он удалит повторяющиеся значения, вернет только отдельные значения, а затем преобразует набор в список с помощью метода list(). Set — это неупорядоченная структура данных, содержащая уникальные элементы.
|
1 2 3 4 |
GoTC = ['Tony', 'Rocket', 'Scott', 'Steve', 'Rocket', 'Natasha', 'Tony'] finalData = list(set(GoTC)) print(finalData) |
Множество удалит повторяющиеся элементы из списка, но вывод будет неупорядоченным.
Выход

Способ 4: использование понимания списка
Понимание списка — это всего лишь однострочное сокращение более расширенного метода, выполняемого с помощью понимания списков.
|
1 2 3 4 5 6 7 |
listA = [11, 21, 19, 11, 19, 11, 29, 46] print("The original list is : " + str(listA)) unique = [] [unique.append(x) for x in listA if x not in unique] print("The list after removing duplicates : " + str(unique)) |
Выход
|
1 2 3 |
The original list is : [11, 21, 19, 11, 19, 11, 29, 46] The list after removing duplicates : [11, 21, 19, 29, 46] |
