python如何比较字符串和整数

时间:2012-02-16 05:59:07

标签: python

在下面的代码中,这是一个简单的算法,用于对元素进行排序。我的问题是如何在内部比较字符串以及解释器如何知道这些字符串将被放置在整数之后

a=[22, 66, 54, 11, 16, 2, 5, 'b', 'a', 3, 2, 1] 
>>> for i in range(len(a)-1):
...    for j in range(len(a)-i-1):
...       if a[j] > a[j+1]:
...          a[j],a[j+1]=a[j+1],a[j]
...
>>> print a
[1, 2, 2, 3, 5, 11, 16, 22, 54, 66, 'a', 'b']

2 个答案:

答案 0 :(得分:3)

在2.x中,如果两个对象无法强制转换为普通类型,则会比较类名。 “str”> “int”,所以他们来了。

在3.x中,如果两个对象无法强制转换为普通类型,则会引发异常。

答案 1 :(得分:2)

任意

  

不同类型的对象,除了不同的数字类型和不同的字符串类型,从不比较相等;这些对象是一致但任意排序的(因此排序异构数组会产生一致的结果)。此外,某些类型(例如,文件对象)仅支持简并比较概念,其中该类型的任何两个对象都是不相等的。同样,这些对象是任意排序的,但始终是。 <,< =,>和> =运算符将在任何操作数是复数时引发TypeError异常。

来自Built-In Types (Python.org)