一点沙 发表于 2023-2-25 20:50:41

照抄竟然还报错

这个代码是从这里的测试题的第二题里要求写的代码直接写过去的,为什么还会报错?


sfqxx 发表于 2023-2-25 20:56:13

因为……
小甲鱼:从报错信息上我们看到“列表不是可哈希类型”,没错,列表是可变的,它怎么可以哈希呢?!咦,等等,这句话好像在那听过……呃,敢情集合跟字典的存储方式一样的丫!

其实你再想想就会觉得很有道理,利用哈希函数计算,相同的元素得到的哈希值(存放地址)是相同的,所以在集合中所有相同的元素都会覆盖掉,因此有了集合的唯一性。

然后你继续接着想就觉得更有道理了,通过哈希函数计算的地址不可能是按顺序排放的,所以集合才强调是无序的!

一点沙 发表于 2023-2-25 21:01:16

sfqxx 发表于 2023-2-25 20:56
因为……

什么意思?

sfqxx 发表于 2023-2-25 21:05:57

一点沙 发表于 2023-2-25 21:01
什么意思?

看不到?

jackz007 发表于 2023-2-25 21:10:14

      错误信息说,列表属于不可散列数据类型,就是说,列表不可以被作为集合的元素,因为无法计算列表的散列值,从而无法确保每一个集合元素的唯一性。

一点沙 发表于 2023-2-25 21:14:18

sfqxx 发表于 2023-2-25 21:05
看不到?

不是,我是不明白

chinajz 发表于 2023-2-26 08:12:26

集合无次序,但有唯一性,元组没问题,意思是集合中不能放元组,这样是可以的:
set1 = [{1,2}]
页: [1]
查看完整版本: 照抄竟然还报错