【发布时间】:2011-07-19 21:01:58
【问题描述】:
我正在尝试获取元组列表:类似于[ [(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 Guru:
a) 当我查看 Hashable 的 Python 定义时 -
“如果一个对象的哈希值在其生命周期内永远不会改变,那么它就是可哈希的(它需要一个hash()方法)”
当我对上面的表达式使用 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((a,b) for a in range(3)) for bin range(3))
b)list 和 set 都将 Iterable 作为参数。为什么一个有效(列表)而另一个无效(设置)?
【问题讨论】:
标签: python