Удаление повторяющихся элементов из списка в Python

Document 对象参考手册Python3 Примеры

В этой главе мы узнаем, как удалить повторяющиеся элементы из списка.

Ключевые знания:

  • Множество Python: Множество — это неупорядоченная последовательность уникальных элементов.

  • Список Python: Список — это конечная последовательность элементов данных, то есть набор элементов данных, расположенных в определённом линейном порядке. К основным операциям, выполняемым над этой структурой данных, относятся поиск, вставка и удаление элементов.

Пример

list_1 = [1, 2, 1, 4, 6]

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 и выше.

Пример

# Используйте dict.fromkeys() для удаления дубликатов с сохранением порядка
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_1 = [1, 2, 1, 4, 6]
list_2 = [7, 8, 2, 1]

print(list(set(list_1) ^ set(list_2)))

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

Затем используйте оператор^, чтобы получить симметричную разность двух списков.

После выполнения вышеуказанного кода вывод будет следующим:

[4, 6, 7, 8]

Сначала преобразуйте два списка в два множества, чтобы удалить дубликаты из каждого списка.

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

Document 对象参考手册Python3 Примеры

Другие расширения