今
日
鸡
汤
行到水穷处,坐看云起时。
大家好,我是Python进阶者。
一、前言
前几天在Python最强王者交流群有个叫【Chloe】的粉丝问了一个Python集合的问题,这里拿出来给大家分享下,一起学习下。
看到这个输出结果应该很意外吧?
说实话,我一开始也以为输出的是第四个答案,但是实际上并不是。
二、解决过程
这个题目很显然是Python基础知识,需要有一定的基础才行。
那么这个地方关于is
(比较的是内存地址id
)和==
(比较的是数值)的用法就安排上了。
我们都知道,集合会自动去重,针对这个题目,最开始容易想到的答案肯定是最后一个,其实不然,如下图所示:
结果让人大跌眼镜。
其实在Python
集合里边,去重,去的是重复的值。对于数字类型(包括int
、float
、bool
、complex
)都是使用 ==
进行比较。
也就是说 True == 1
的结果也是True
。那么print({1, 1.0, 1.00, True})
,结果只能是{1}
。
这里不得不提到,上次发的那个文章,小小明大佬用bool
值去加上某个数字,用于字符串切片。详情请戳:手把手教你使用Python提取快递信息。
通过pandas进行提取,这里使用小小明大佬给的指导代码,可以提取省位,真不错!
df['地区2']=df.地区.apply(lambda s: s[:(s in ("黑龙江省", "内蒙古自治区"))+2])
这个逻辑确实很强!
如此一来,大家伙就都明白了。
这里【瑜亮老师】给出了充分的理论认证。Python
的基本数据类型有这6种:
不可变数据(3 个):Number
(数字)、String
(字符串)、Tuple
(元组);
可变数据(3 个):Lis
t(列表)、Dictionary
(字典)、Set
(集合)。
其中Number
有 int
、float
、bool
、complex
(复数)这4种。
既然4个都是Number
,那就是说他们就可以直接相加。那么True == 1 == 1.0 == 1e0
的结果就是True
!
惊不惊喜,意不意外?
真是到处都是知识盲区啊!
这里【冯诚】大佬给出了一个示例,如下图所示:
虽然不知道原因,但是我看了之后大为震撼,经过【瑜亮老师】一番讲解,大家都顿悟了。
不得不承认,小小明大佬给我们带来的惊讶实在是太多了。
三、总结
大家好,我是Python进阶者。这篇文章主要盘点了Python集合中一个“坑”的问题,给出了具体的解析和代码演示,文中【瑜亮老师】演示了更深层次的Python讲解,帮助大家加深了对Python数据类型的理解,也顺利地帮助粉丝解决了问题。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.e1idc.net