python 2.7 set

本文深入探讨Python中的Set数据结构,解析其工作原理,包括如何创建、添加、删除元素,以及进行集合运算。同时,讨论了Set与Dict的区别,强调了不可变对象作为Key的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

set:

           set 和 dict 类似,也是一组key的集合,但不存储value。由于key不能重复,所以在set中,没有重复的key。

            要创建set,需要提供一个list作为输入集合:

                   

             注意:传入的参数[1,2,3,4] 是一个list,而显示的 set([1,2,3,4]) 只是告诉你这个set内部有1,2,3,4 这四个元素,显示的 [] 不表示这是一个list。

              重复元素在set中自动被过滤:

               

               通过 add(key) 方法可以添加元素到set 中,可以重复添加,但不会有效果:

               

               通过 remove(key)  方法可以删除元素:

               

              set 可以看成数学意义上的无序和无重复的集合,因此,两次 set 可以做数学意义上的交集、并集等操作:

               

               set 和 dict 的唯一区别仅在于没有存储对应的 value,但是 set 的原理和 dict 一样,所以,同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部不会有重复元素。

                把 list 放入 set 报错:   

                         

               再议不可变对象:上面我们讲了,str是不变对象,而list是可变对象。

               对于可变对象,比如list,对list进行操作,list内部的内容是会变化的;比如:

                

               对于不可变对象,比如 str 对str 进行操作呢?

               

               虽然字符串有个 replace()  方法,也确实变出了  'Zbc' ,但变量a 最后仍是 'abc'  , 应该怎么理解呢?

               我们先把代码改成下面这样:

                

                要始终牢记的是,a 是变量,而 'Xbc' 才是字符串对象!有些时候,我们经常说,对象a的内容是 'Xbc' ,但其实是指: a 本身是一个变量,它指向的对象的内容才是 'Xbc' 。

                 

                  当我们调用 a.replace('a', 'X')时,实际上调用方法 replace 是作用在字符串对象 'Xbc' 上的,而这个方法虽然名字叫replace ,但却没有改变字符串 ‘Xbc’ 的内容。相反,replace 方法创建了一个新的字符串 'Xbc' 并返回,如果我们用变量 b 指向该新字符串,就容易理解了。变量 a 扔指向原有的字符串 'abc' ,但变量 b 却指向新字符串 'Xbc' 了。

                

               所以,对于不变对象来说,调用对象自身的任意方法,也不会改变该对象自身的内容,相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可变的。

 小结:

          使用 key_value 存储结构的 dict 在python中非常有用,选择不可变对象作为 key 很重要。最常用的 key 是字符串。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值