照抄竟然还报错
这个代码是从这里的测试题的第二题里要求写的代码直接写过去的,为什么还会报错?因为……
小甲鱼:从报错信息上我们看到“列表不是可哈希类型”,没错,列表是可变的,它怎么可以哈希呢?!咦,等等,这句话好像在那听过……呃,敢情集合跟字典的存储方式一样的丫!
其实你再想想就会觉得很有道理,利用哈希函数计算,相同的元素得到的哈希值(存放地址)是相同的,所以在集合中所有相同的元素都会覆盖掉,因此有了集合的唯一性。
然后你继续接着想就觉得更有道理了,通过哈希函数计算的地址不可能是按顺序排放的,所以集合才强调是无序的! sfqxx 发表于 2023-2-25 20:56
因为……
什么意思? 一点沙 发表于 2023-2-25 21:01
什么意思?
看不到? 错误信息说,列表属于不可散列数据类型,就是说,列表不可以被作为集合的元素,因为无法计算列表的散列值,从而无法确保每一个集合元素的唯一性。 sfqxx 发表于 2023-2-25 21:05
看不到?
不是,我是不明白 集合无次序,但有唯一性,元组没问题,意思是集合中不能放元组,这样是可以的:
set1 = [{1,2}]
页:
[1]