создает единый набор элементов без дубликатов, тогда как список может содержать произвольные данные.
аюсь получить список списка кортежей: что-то вроде[ [(1,0),(2,0),(3,0)],[(1,1),(2,1),(3,1)....]]
Я использовал это утверждение
set([(a,b)for a in range(3)]for b in range(3))
Но это дает мне ошибку
TypeError: unhashable type: 'list'
У меня есть 2 вопроса для Гуру Питона:
а) Когда я смотрю на определение Python Hashable -
«Объект является хэшируемым, если он имеет хеш-значение, которое никогда не изменяется в течение срока его службы (ему требуетсягашиш() метод)
когда я использовал функцию dir в выражении выше
dir([(a,b)for a in range(3)]for b in range(3))
кажется, что__hash__
есть. Итак, почему я получаю ошибку?
Я смог получить[[(0, 0), (1, 0), (2, 0)], [(0, 1), (1, 1), (2, 1)], [(0, 2), (1, 2), (2, 2)]]
с помощью команды list:
list(list((a,b) for a in range(3)) for bin range(3))
б) перечислить и установить оба принимает Iterable в качестве параметра. Почему один работает (список), а другой нет (установлен)?