为何20130708< “”在Python中返回true?

时间:2013-07-22 22:53:30

标签: python string

>>> 20130708 < ''
True
>>> 20130708 > ''
False

我不确定这是什么解释。 The wikipedia article on lexicographical ordering

  

u&lt; v如果你是v

的前缀

由于“”是“20130708”的前缀,我希望“20130708”&lt; “”是假的。

2 个答案:

答案 0 :(得分:10)

您的问题标题与您的代码不符。您没有将"20130708"""进行比较,而是将20130708""进行比较 - 即整数,其中包含空字符串。

Python 2的一个特点是整数总是比字符串少。在Python 3中,这是固定的,并且该代码引发TypeError: unorderable types: int() < str()

答案 1 :(得分:1)

这里缺少引号:

>>> "20130708" < ""
False

您正在做的是将intsstr进行比较,即rich comparisons。因此,任何int都比任何str“小”。