列表不可哈希,但元组可哈希?
在如何哈希列表?有人告诉我,我应该转换为一个元组第一,如[1,2,3,4,5]
到(1,2,3,4,5)
。
因此,第一个不能散列,而第二个可以散列。为什么*?
*我并不是真正地在寻求详细的技术说明,而是在寻找一种直觉
回答:
主要是因为元组是不可变的。承担以下工作:
>>> l = [1, 2, 3]>>> t = (1, 2, 3)
>>> x = {l: 'a list', t: 'a tuple'}
现在,当您这样做时会发生什么l.append(4)
?您已修改字典中的键!远道而来!如果您熟悉哈希算法的工作原理,这会让您感到恐惧。另一方面,元组是绝对不变的。t
+= (1,)看起来好像是在修改元组,但实际上并非如此:它只是创建一个 新的 元组,而字典键保持不变。
以上是 列表不可哈希,但元组可哈希? 的全部内容, 来源链接: utcz.com/qa/413720.html