python系列教程128——比较

朋友们,如需转载请标明出处:https://blog.csdn.net/jiangjunshow

声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值得阅读!PS:看不懂本篇文章的同学请先看前面的文章,循序渐进每天学一点就不会觉得难了!

Python的比较会检查嵌套对象的所有部分,直到可以得出结果为止。Python能够自动遍历数据结构,并从左到右递归地应用比较,要多深就走多深。过程中首次发现差值才停止。

例如,下面代码在比较列表对象时将自动比较它的所有内容。

>>> L1 = [1,('a',3)]   # Same value,unique objects

>>> L2 = [1,('a',3)]

>>> L1 == L2,L1 is L2   # Equivalent? Same object?

(True,False)

上面的L1和L2虽然相等,却是不同的对象:
•“==”操作符检测值的相等性。
•“is”表达式检测对象的一致性。即检测二者是否是同一个对象(也就是说,在同一个内存地址中)。

L1和L2通过了“==”检测(他们的值相等,因为它们的所有内容都是相等的),但是is检测却失败了(它们是两个不同的对象,因此有不同的内存区域)。

但有时候会有“意外”出现,我们来看看下面的短字符串比较:

>>> S1 = 'spam'

>>> S2 = 'spam'

>>> S1 == S2,S1 is S2

(True,True)

根据文章开头处我们学到的知识:“==”应该为真,而is应该为假。但是这里为什么两个真呢?因为在Python内部会暂时储存并重复使用短字符串来优化内存,所以事实上内存里只有一个字符串’spam’供S1和S2分享。因此,“is”一致性检测结果为真。但是要记住,更长的字符串就不会被复用了:

>>> S1 = 'a longer string'

>>> S2 = 'a longer string'

>>> S1 == S2,S1 is S2

(True,False)

相对大小的比较也能够递归地应用于嵌套的数据结构。

>>> L1 = [1,('a',3)]

>>> L2 = [1,('a',2)]

>>> L1 < L2,L1 == L2,L1 > L2  # Less,equal,greater: tuple of results

(False,False,True)

因为嵌套的3大于2,所以这里的L1大于L2。

一般来说,Python中不同的类型的比较方法如下:
•数字通过相对大小进行比较。
•字符串是按照字典顺序,一个字符接一个字符地对比进行比较(“abc” < “ac”)。
•列表和元组从左到右对每部分的内容进行比较。
•字典通过排序之后的(键、值)列表进行比较。字典的相对大小比较在Python 3.0中不被支持。
•数字混合类型比较(例如,1 < ‘spam’)在Python 3.0中是错误的。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值