因为dict和set的key都是不可变的对象,如果是可变的,dict和set的内部会混乱
这里我复习一下上节课说的tuple: tuple是不变的,上一节课最后一个例子说到,当tuple中有一个list元素,比如tupleB(1,[2,3]),tupleB的不变说的是tupleB中的每个元素指向不变。但是list[2,3]这个元素它指向的东西是可变的,所以在指向不变的基础上,要创建一个内容也不变的tuple,就要保证tuple中的每一个元素本身也是不可变的。
1.当tupleA(1,2,3)作为key的时候,tupleA中的每一个是不可变的,所以程序不会报错。 2.当tupleB(1,[2,3])作为key的时候,tupleB中的[2,3]是一个list,list的指向是可变的,所以程序报错。 3.因为dict和set对value是不是可变对象没有约束,所以他们都可以作为value
(个人理解,说出来大家看一下)
到位! 本篇文章能对 set 的语法 用法 等介绍的在详细点就好了 。
说的很对
Sign in to make a reply
FJ-W97
因为dict和set的key都是不可变的对象,如果是可变的,dict和set的内部会混乱
这里我复习一下上节课说的tuple: tuple是不变的,上一节课最后一个例子说到,当tuple中有一个list元素,比如tupleB(1,[2,3]),tupleB的不变说的是tupleB中的每个元素指向不变。但是list[2,3]这个元素它指向的东西是可变的,所以在指向不变的基础上,要创建一个内容也不变的tuple,就要保证tuple中的每一个元素本身也是不可变的。
1.当tupleA(1,2,3)作为key的时候,tupleA中的每一个是不可变的,所以程序不会报错。 2.当tupleB(1,[2,3])作为key的时候,tupleB中的[2,3]是一个list,list的指向是可变的,所以程序报错。 3.因为dict和set对value是不是可变对象没有约束,所以他们都可以作为value
(个人理解,说出来大家看一下)