好久没有开始写过技术文章了。
主要是拖延病犯了,始终不愿意抬手去敲键盘。有一个好的主题,自己老毛病又来了,觉得这个主题太简单。技术人始终就是太偏执,认为一定是要高级、复杂的东西才需要分享。
比如需要一个高级的算法、复杂的架构才需要分享给其他人,其实不然。
分享的东西一定要有意义,不要造垃圾知识
。之前看到一篇报道,说一个美国一个小伙用机器翻译成苏格兰的维基百科,导致读起来非常的费力,这个就是典型的从事知识破坏活动。
https://redd.it/ig9jia
开头说了这么多,就开始今天的小分享。
问题
问题就是:"9" >= "15"
实际返回的是什么?本质比较的又是什么?
在 python 里面其实返回的是 True
,
原理
在 python 文档里面(如下),关于字符串的比较其实就是首先从第一个开始,转化成对应的ASCII码后进行比较大小, 如果它们相等,则比较后一个,依此类推,直到两个字符串都用完为止。
https://docs.python.org/3/tutorial/datastructures.html#comparing-sequences-and-other-types
既然是ASCII码的比较,那么可以来实战一下,加深记忆。
举例
先来第一个:
‘6’>‘47’ True
下面从第一位就可以比较出结果了。ord(6)=54
, 而ord(4)=52
,显而易见,54>52,所以结果是 True。
举一反三:
‘1234’ > ‘1233’
结果是 True
从第1到第3都是一样的,因此到第4的时候才发现是不同。根据ASCII码返回结果。
‘1234’ > ‘123333333’
结果也是 True
第4位的已经出结果了,不管后面有多少个3或者其他,结果一样。
比较其他
除了单个纯数字、字符串可以比较,还有数组、元组都都可以比较。比较方式和字符串类似。
直接引用官方的例子:
(1, 2, 3) < (1, 2, 4)
[1, 2, 3] < [1, 2, 4]
'ABC' < 'C' < 'Pascal' < 'Python'
(1, 2, 3, 4) < (1, 2, 4)
(1, 2) < (1, 2, -1)
(1, 2, 3) == (1.0, 2.0, 3.0)
(1, 2, ('aa', 'ab')) < (1, 2, ('abc', 'a'), 4)
但是要注意在 python 里面是同等类型的比较
,不同类型比较是会报TypeError错。比如 “1” > 1,会提示:TypeError: '>' not supported between instances of 'str' and 'int'
。