Удаление повторяющихся элементов из списка в Python
В этой главе мы узнаем, как удалить повторяющиеся элементы из списка.
Ключевые знания:
-
Множество Python: Множество — это неупорядоченная последовательность уникальных элементов.
-
Список Python: Список — это конечная последовательность элементов данных, то есть набор элементов данных, расположенных в определённом линейном порядке. К основным операциям, выполняемым над этой структурой данных, относятся поиск, вставка и удаление элементов.
Пример
print(list(set(list_1)))
После выполнения вышеуказанного кода вывод будет следующим:
[1, 2, 4, 6]
В приведённом выше примере мы сначала преобразуем список в множество, а затем обратно в список. Множество не может содержать повторяющиеся элементы, поэтому set() удаляет повторяющиеся элементы.
Если вам нужно сохранить порядок элементов в исходном списке, можно использовать вспомогательное множество для отслеживания уже встречавшихся элементов, а затем создать новый список.
Пример
def remove_duplicates(lst):
seen = set()
unique_list = []
for item in lst:
if item not in seen:
seen.add(item)
unique_list.append(item)
return unique_list
# Пример
original_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = remove_duplicates(original_list)
print(unique_list) # Вывод: [1, 2, 3, 4, 5]
Использование dict.fromkeys()
Метод dict.fromkeys() также можно использовать для удаления дубликатов с сохранением порядка, поскольку словари сохраняют порядок вставки в Python 3.7 и выше.
Пример
def remove_duplicates(lst):
return list(dict.fromkeys(lst))
# Пример
original_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = remove_duplicates(original_list)
print(unique_list) # Вывод: [1, 2, 3, 4, 5]
После выполнения вышеуказанного кода вывод будет следующим:
[1, 2, 3, 4, 5]
Использование спискового включения
Списковое включение в сочетании с условными проверками также может обеспечить удаление дубликатов.
Пример
def remove_duplicates(lst):
unique_list = []
[unique_list.append(item) for item in lst if item not in unique_list]
return unique_list
# Пример
original_list = [1, 2, 2, 3, 4, 4, 5]
unique_list = remove_duplicates(original_list)
print(unique_list) # Вывод: [1, 2, 3, 4, 5]
Удаление повторяющихся элементов из двух списков
В следующем примере удаляются элементы, которые присутствуют в обоих списках.
Пример
list_2 = [7, 8, 2, 1]
print(list(set(list_1) ^ set(list_2)))
Сначала используйте set() для преобразования двух списков в два множества, чтобы удалить повторяющиеся элементы из списков.
Затем используйте оператор^, чтобы получить симметричную разность двух списков.
После выполнения вышеуказанного кода вывод будет следующим:
[4, 6, 7, 8]
Сначала преобразуйте два списка в два множества, чтобы удалить дубликаты из каждого списка.
Затем^даёт симметричную разность двух списков (исключая пересекающиеся элементы двух множеств).
Другие расширения
Python3 Примеры