为了账号安全,请及时绑定邮箱和手机立即绑定

python之访问set()疑问

有个疑问:上面课程说set存储的元素和dict的key类似,必须是不变对象,那为什么list可以作为set()的元素,list内容不是可变的么?这里的不变是对象的指向不变?还是怎么理解

正在回答

5 回答

list是指针,存放的是地址,指向list内容.所以set存的是list指针(它内容的地址),地址没有改变,改变的是地址里面的内容.

1 回复 有任何疑惑可以回复我~
#1

balllyh 提问者

灰常感谢,说到指针立马就明白啦 哈哈
2017-02-07 回复 有任何疑惑可以回复我~
#2

balllyh 提问者

非常感谢!
2017-02-07 回复 有任何疑惑可以回复我~
#3

慕粉3793584 回复 balllyh 提问者

没事 相互学习
2017-02-08 回复 有任何疑惑可以回复我~

这个list只是作为参数传递给set而已,生成的set中并不包含这个list

0 回复 有任何疑惑可以回复我~

楼上的最佳答案是错误的。


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者的(键)元素。



1 回复 有任何疑惑可以回复我~

就像这里有3个盒子 必须三个盒子 但是不管盒子里装什么东西

0 回复 有任何疑惑可以回复我~

list作为set的元素时,list中的内容改变,但list未变,就像超市的货架1,2,3,货架1可能放穿的衣服,也可以放吃的东西,但是超市还是3个货架,并没有因此增加或减少货架。

0 回复 有任何疑惑可以回复我~
#1

balllyh 提问者

灰常感谢
2017-02-07 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
初识Python
  • 参与学习       758624    人
  • 解答问题       8667    个

学python入门视频教程,让你快速入门并能编写简单的Python程序

进入课程

python之访问set()疑问

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信