2012-02-16 110 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)