鱼C论坛

 找回密码
 立即注册
查看: 2603|回复: 6

[已解决]请教一个关于哈希类型的问题

[复制链接]
发表于 2016-2-12 11:41:44 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在小甲鱼“零基础入门学习python”视频教程课后习题第27课第四题中(具体解答见图片附件):
小甲鱼的解答能够听懂,想问的是
set1 = {[1,2]}这样复制会报错,{[1,2]}是列表list类型吗?是的话就不能给set1赋值了
小甲鱼的解答:列表是可变的,不能哈希,这点我理解,但set1 = {[1,2]}是如何体现列表以至于不能哈希的还是没搞明白。
请大神君帮帮忙解答下,多谢啦!
最佳答案
2016-2-13 14:46:51
{1,3,2}构造集合的方式是建立对应元素的hash值,所有元素的hash值构成映射表来实现对应关系。
也就是说会有hash(1),hash(2),hash(3)这几步
同理如果想直接使用{[1,2]}构造集合,python会把[1,2]当成一个元素进行hash,也就是hash([1,2])所以会报错。至于为什么list不能进行hash我也还不太理解
QQ截图20160212113451.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2016-2-13 14:46:51 | 显示全部楼层    本楼为最佳答案   
{1,3,2}构造集合的方式是建立对应元素的hash值,所有元素的hash值构成映射表来实现对应关系。
也就是说会有hash(1),hash(2),hash(3)这几步
同理如果想直接使用{[1,2]}构造集合,python会把[1,2]当成一个元素进行hash,也就是hash([1,2])所以会报错。至于为什么list不能进行hash我也还不太理解
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-13 19:02:45 | 显示全部楼层
zooo 发表于 2016-2-13 14:46
{1,3,2}构造集合的方式是建立对应元素的hash值,所有元素的hash值构成映射表来实现对应关系。
也就是 ...

谢谢!不过请问为什么“python会把[1,2]当成一个元素进行hash”就会报错呢?
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-13 20:38:27 | 显示全部楼层
集合的元素不能是非hash的,即不能是可变类型。这应该和它的存储方式相关。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-14 22:47:09 | 显示全部楼层
冬雪雪冬 发表于 2016-2-13 20:38
集合的元素不能是非hash的,即不能是可变类型。这应该和它的存储方式相关。

这样哦,好,谢谢解答~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2016-2-15 16:29:06 | 显示全部楼层
来学习下,还没有看到这里
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2016-2-15 17:31:51 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2026-2-19 15:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表