我是一个编程新手,当我在Python中学习集合时,我遇到了这个问题。当我将一个元组作为参数传递给add方法时,元组包含在set_1中,而当我将一个列表作为参数传递给add方法时,它会导致TypeError:不可散列类型:'list'在下面给出的代码中。
set_1 = {"a", "b", "c"}
set_1.add((1,2,3))
print(set_1)
set_1.add([4,5,6])
print(set_1)
请说明此错误的原因,并解释为什么在将列表作为参数传递到set.add()方法时会发生散列
2条答案
按热度按时间kpbpu0081#
要添加到集合中,对象必须是不可变的。元组、字符串和数字都满足这个要求,因此可以添加到集合中。另一方面,列表是可变的,因此不能添加。
gab6jxml2#
关键是要理解不可变和可变之间的区别。一种类型的对象在运行时是可更改的,而另一种类型是已设置的,不能修改。在这种情况下,List是可变的。
元组或集合是不可变的,其值不能改变,因此哈希也不能改变。另一方面,列表是可变的,可以在以后添加,删除,删除元素,这将违背
hash
所做的。