比较python中的字符串和<比较运算符

时间:2015-01-08 11:24:03

标签: python

我是python的新手,我正在尝试学习基础知识。我发现了python解释器的奇怪行为:

>>> 'Pp' < 'Pn' 
False      # --> expected p comes after n
>>> 'Pap' < 'Pbn'
True       # --> though a < b, p is not < n. How can this result as True?

有人可以解释一下吗?

3 个答案:

答案 0 :(得分:4)

为什么你会期望它关心b&gt; N +这是按字母顺序排序,就像您在电话簿中找到的那样(如果那些仍然存在)。您可能希望看到他们这样订购:

Pap
Pb
Pbn
Pn

这确实是Python的回归。

答案 1 :(得分:1)

来自docs

比较使用词典排序:首先比较前两个项目,如果它们不同,则确定比较的结果;如果它们相等,则比较接下来的两个项目,依此类推,直到任一序列用完为止。

答案 2 :(得分:0)

'Pp'<'Pn'
在这种情况下,首先比较两个字符串的首字母,因为它们相等。因此,它将比较第二个字母,因为n在字母中最先出现,它必须小于p。由于违反条件,因此返回False。
'Pap'<'Pbn'
  在这里,以相同的方式比较第一个字母,因为它们相等,它将比较两个字符串的第二个字母,因为a按字母顺序首先出现,小于b。因此条件得到满足,它打破了循环并重新调整为True。
如果条件满足,它将返回True并中断。如果不满意,它将一直执行到字符串结尾。