我正在尝试获取一个元组的列表:类似于
[ [(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'
我有两个问题要问Python专家:
a) 当我查看Python中Hashable的定义时 -
"如果一个对象具有在其生命周期内永远不会更改的哈希值,则它是可哈希的(需要一个hash()方法)"
当我对上述表达式使用dir函数时,
dir([(a,b)for a in range(3)]for b in range(3))
看起来代码中已经定义了__hash__
,那么我为什么会得到错误?
我通过使用list
命令获得了[[(0, 0), (1, 0), (2, 0)], [(0, 1), (1, 1), (2, 1)], [(0, 2), (1, 2), (2, 2)]]
。
list(list((a,b) for a in range(3)) for bin range(3))
b) 列表和集合都接受Iterable作为参数。一个可以工作(列表),而另一个不行(集合),为什么?