2012-02-16 123 views
4

在下面的代码下面,这是写入排序elements.My问题一个简单的算法是如何串在内部进行比较,以及如何解释都知道,这些字符串将被放置在后整数如何蟒蛇比较字符串和整数

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'] 
+0

的可能重复[Python是怎样比较两个字符串和int?](http://stackoverflow.com/questions/3270680/how-does-python-compare-string-and-int ) – jcollado 2012-02-20 07:28:30

回答

3

在2.x中,如果两个对象不能被强制为通用类型,那么它会比较类名称。 “str”>“int”,所以他们来了。

在3.x中,如果两个对象不能被强制转换为普通类型,那么一个异常上升。

+0

“str”>“int”? – Rajeev 2012-02-16 09:12:54

2

随意。

不同类型的对象,除了不同的数字类型和不同的字符串类型,永远不会比较相等;这样的对象排序一致但任意(排序异构数组产生一致的结果)。此外,某些类型(例如,文件对象)的支持仅比较,其中该类型的任何两个对象是不相等的简并概念。再次,这些对象随意,但始终订购。当任何操作数是复数的<,< =,>和> =运营​​商将提高TypeError异常。

Built-In Types (Python.org)