Как убрать дубликаты в списке с списками?

Чтобы удалить дубликаты в списке, где элементы сами являются списками, можно воспользоваться несколькими методами в Python. Рассмотрим несколько подходов.

1. Первый подход основан на использовании метода set() для удаления дубликатов. Однако, встроенный тип данных set не является хэшируемым, поэтому непосредственное использование его для списков не является возможным. Вместо этого, можно использовать следующий код:

original_list = [[1, 2], [3, 4], [1, 2], [5, 6], [3, 4]]
cleaned_list = [list(x) for x in set(tuple(x) for x in original_list)]

В этом примере мы сначала преобразуем вложенные списки в кортежи с помощью генератора tuple(x) for x in original_list, а затем используем множество для удаления дубликатов, преобразуя его обратно в список.

2. Второй подход заключается в использовании цикла for для создания нового списка, содержащего только уникальные элементы. Ключевой момент здесь — использование in для проверки, содержится ли элемент уже в новом списке:

original_list = [[1, 2], [3, 4], [1, 2], [5, 6], [3, 4]]
cleaned_list = []
for sublist in original_list:
    if sublist not in cleaned_list:
        cleaned_list.append(sublist)

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

3. Третий подход основан на использовании библиотеки numpy, которая предоставляет функцию unique() для удаления дубликатов в многомерных массивах:

import numpy as np

original_list = [[1, 2], [3, 4], [1, 2], [5, 6], [3, 4]]
cleaned_list = np.unique(original_list, axis=0).tolist()

В этом примере мы используем функцию unique() с параметром axis=0 для определения оси, по которой требуется проверка уникальности. Затем мы преобразуем полученный массив обратно в список с помощью tolist().

Выбор конкретного метода зависит от ваших потребностей и предпочтений. Первый подход с использованием множеств обычно является самым эффективным, особенно при работе с большими списками.