我是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?
有人可以解释一下吗?
答案 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并中断。如果不满意,它将一直执行到字符串结尾。