python之访问set()疑问
有个疑问:上面课程说set存储的元素和dict的key类似,必须是不变对象,那为什么list可以作为set()的元素,list内容不是可变的么?这里的不变是对象的指向不变?还是怎么理解
有个疑问:上面课程说set存储的元素和dict的key类似,必须是不变对象,那为什么list可以作为set()的元素,list内容不是可变的么?这里的不变是对象的指向不变?还是怎么理解
2017-02-07
楼上的最佳答案是错误的。
6-3 Python中dict的特点这篇里写到:
dict的第三个特点是作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。
6-6 Python中什么是set中写到:
创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素
请注意,上述打印的形式类似 list, 但它不是 list,仔细看还可以发现,打印的顺序和原始 list 的顺序有可能是不同的,因为set内部存储的元素是无序的。
6-8 Python之 set的特点写到:
set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。
结论:
1、创建set时传入了一个list来构建set,但并非将list本身作为set的元素,而是list的元素作为set的元素,这两个说法是不同的。
2、set的元素和dict的键元素,都必须是不可变对象,list不能作为这2者的(键)元素。
举报