Подтвердить что ты не робот

Python: как удалить дубликаты списков в списке?

Я хочу удалить список дубликатов из списка.

Итак, у меня есть список таких списков.

a = [[1,2],[1,2],[3,4,5],[3,4,5],[3,4,5]]

Я хочу иметь:

b = [[1,2],[3,4,5]]

Я не знаю, как это сделать.

Спасибо

4b9b3361

Ответ 1

Вы можете использовать набор:

b_set = set(map(tuple,a))  #need to convert the inner lists to tuples so they are hashable
b = map(list,b_set) #Now convert tuples back into lists (maybe unnecessary?)

Или, если вы предпочитаете списки/генераторы списков:

b_set = set(tuple(x) for x in a)
b = [ list(x) for x in b_set ]

Наконец, если порядок важен, вы всегда можете сортировать b:

b.sort(key = lambda x: a.index(x) )

Ответ 2

См. ответ mgilson, если порядок списков не важен. Если вы хотите сохранить заказ, сделайте что-то вроде:

b = list()
for sublist in a:
    if sublist not in b:
        b.append(sublist)

Это сохранит порядок в исходном списке. Тем не менее, он медленнее и сложнее, чем использование наборов.