python中 字元串是怎麼比較大小的?

python初學者,看到 "alpha" &< "beta". 請問為什麼是小於,兩個字元串怎麼比較的?

還有[1,2]&<[2,1] 兩個列表又是如何比較的大小的?


字元串也好,列表也好,都是可迭代對象。

先比較兩個對象的第0個元素,大小關係即為對象的大小關係,如果相等則繼續比較後續元素,先終止迭代的認為是小的。


Strings (instances of str) compare lexicographically using the numerical Unicode code points (the result of the built-in function ord()) of their characters.

我翻譯下:String 通過 內置函數 ord() 獲得每個字元的 Unicode 編碼進行大小比較

Collections that support order comparison are ordered the same as their first unequal elements (for example, [1,2,x] &<=[1,2,y] has the same value as x &<= y). If a corresponding element does not exist, the shorter collection is ordered first (for example, [1,2] &< [1,2,3] is true).

List 裡面從第一個元素開始依次比較。。。

引用源自 Python 英文文檔。原文鏈接:6. Expressions - Python 3.6.0 documentation

這些細節重要不重要還是取決於你個人。無論如何,我們都要懷著一顆謹慎的心。這些細節沒必要死記硬背,寫代碼的時候注意這些細節,忘記了及時查文檔就好。說不定你哪天踩到了這個坑,惱火地調試半天。我很幸運,因為之前看過這些,所以自然避免了這些坑。

以上。共勉。


用cmp函數比較一下就知道大小了。比較的原理是從0位置開始往後比較,字元按照本身的順序值排列,一個字母的順序值可以用ord函數查到。比如a是97 A是65。


字元串是通過依次比較每個字元在字母表中的順序來確定大小的吧,因為「beta」的首字元「b」在「alpha」的首字元「a」之後,所以「beta」 &> "alpha"。

至於列表的大小比較,我學python一年多了都沒有看到過或聽說過這個。也許是我學藝不精,也許是你沒必要糾結這些細節,我覺得python有更加重要的東西等著你去了解。

個人意見,僅供參考。


推薦閱讀:

TAG:Python | Python入門 |