盘点Python集合中一个“坑”

点击上方“Python爬虫与数据挖掘”,进行关注

回复“书籍”即可获赠Python从入门到进阶共10本电子书

行到水穷处,坐看云起时。

大家好,我是Python进阶者。

一、前言

前几天在Python最强王者交流群有个叫【Chloe】的粉丝问了一个Python集合的问题,这里拿出来给大家分享下,一起学习下。

ae2ecc2aae1ca6170679050a73e72a37.png

看到这个输出结果应该很意外吧?

说实话,我一开始也以为输出的是第四个答案,但是实际上并不是。

621478e043ed4d5eea170f9d3c10167f.png

二、解决过程

这个题目很显然是Python基础知识,需要有一定的基础才行。

a15be9332afa04f53de98078d6a3e8ef.png

那么这个地方关于is(比较的是内存地址id)和==(比较的是数值)的用法就安排上了。f8c6779876fbd9295fba5de6a5786c3f.png

我们都知道,集合会自动去重,针对这个题目,最开始容易想到的答案肯定是最后一个,其实不然,如下图所示:

c95f382f52fb5ec64660b7949bc3844b.png

结果让人大跌眼镜。

21386c976577825f8eaf3703bf4df7aa.png

其实在Python集合里边,去重,去的是重复的值。对于数字类型(包括intfloatboolcomplex)都是使用 == 进行比较。

07aaebd3a1bb410a9ba7a4f2ba43606d.png

也就是说 True == 1 的结果也是True。那么print({1, 1.0, 1.00, True}),结果只能是{1}

d01d44c8da2779f03291364b97418916.png

这里不得不提到,上次发的那个文章,小小明大佬用bool值去加上某个数字,用于字符串切片。详情请戳:手把手教你使用Python提取快递信息

be5f03b6ce856402e997d8a6d2be942a.png

通过pandas进行提取,这里使用小小明大佬给的指导代码,可以提取省位,真不错!

092642cd48bb39baf8ec2b6e87060ff0.png
df['地区2']=df.地区.apply(lambda s: s[:(s in ("黑龙江省", "内蒙古自治区"))+2])

这个逻辑确实很强!

如此一来,大家伙就都明白了。

8c2f05e17883f95bd5cadb73bc6b90b9.png

这里【瑜亮老师】给出了充分的理论认证。Python的基本数据类型有这6种:

不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);

可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。

其中Number有 intfloatboolcomplex(复数)这4种。

e5698bfcb503b21085fd39a3e85960f7.png

既然4个都是Number,那就是说他们就可以直接相加。那么True == 1 == 1.0 == 1e0的结果就是True

惊不惊喜,意不意外?

1b9a5fc800615da32b31eaa34c54ccd1.png

真是到处都是知识盲区啊!

这里【冯诚】大佬给出了一个示例,如下图所示:

f0f8ec8cf5df698b49424872f17271c0.png虽然不知道原因,但是我看了之后大为震撼,经过【瑜亮老师】一番讲解,大家都顿悟了。

8d14de6afd2446bca69f216a80b387a2.png

不得不承认,小小明大佬给我们带来的惊讶实在是太多了。11f61e00ce3bd0808cf32585991f9eea.png

三、总结

大家好,我是Python进阶者。这篇文章主要盘点了Python集合中一个“坑”的问题,给出了具体的解析和代码演示,文中【瑜亮老师】演示了更深层次的Python讲解,帮助大家加深了对Python数据类型的理解,也顺利地帮助粉丝解决了问题。

最后感谢粉丝【Chloe】提问,感谢【瑜亮老师】给出的具体解析和代码演示,感谢【老松鼠】、【Jun】、【PI】、【dcpeng】、【冯诚】、【月神】等人参与学习交流,感谢【小小明】大佬给出的代码,让大家叹为观止。

小伙伴们,快快用实践一下吧!如果在学习过程中,有遇到任何Python问题,欢迎加我好友,我拉你进Python学习交流群共同探讨学习。

d187214ee6998bcc7d8b532d431abbbd.png

------------------- End -------------------

往期精彩文章推荐:

0dde1fd567e8cf3ba2ef6ac9505483bf.png

欢迎大家点赞,留言,转发,转载,感谢大家的相伴与支持

想加入Python学习群请在后台回复【

万水千山总是情,点个【在看】行不行

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值