回答
在Python2,對於不同類型的對象的默認比較是使用ID它們的類型的(獲得由鑄造對象指針比較到整數)。這裏的源鏈接:http://hg.python.org/cpython/file/2.7/Objects/object.c#l757
在我的身材,這裏是類型排序:
>>> sorted([bool, int, float, long, list, tuple, dict, str, unicode])
[<type 'bool'>, <type 'float'>, <type 'int'>, <type 'list'>, <type 'long'>,
<type 'dict'>, <type 'str'>, <type 'tuple'>, <type 'unicode'>]
號(除了複雜)已經比較,允許基於數值十字型的比較方法(即一個float可以和int相比較)。
該無對象是特殊的。它比其他所有東西都少。
看到這一切放在一起,使用排序看到排序:
>>> sorted(zoo)
[None, -5, -5.0, 0, 0.0, -0.0, False, True, 10, 10.0, 11.5, {},
{'abc': 10}, {'lmno': 20}, [], [1, 2], [1, 2, 3], [1, [2, 3]],
'', u'', 'alpha', u'alpha', 'bingo', 'cat',(), (1, 2),
(1, 2, 3), (1, (2, 3)), u'bingo', u'cat']
它確實whatever the >
operator does的兩個元素。
在Python 2中,使用特殊邏輯將不同類型的對象按類型的字符串表示進行比較。有關詳細信息,請參閱Raymond的answer。
在Python 3這個代碼將產生一個異常:
Traceback (most recent call last):
File "prog.py", line 1, in <module>
max([1,52,53],[1,'3'])
TypeError: unorderable types: str() > int()
對不起,這是不正確的。默認比較不使用該類型的字符串表示。 – 2012-04-19 11:44:21
請您詳細說明什麼是「類型的字符串表示」? – 2012-04-19 11:48:36
'>>> None> 1' 'False' – 2012-04-19 11:53:47
- 1. 查找最大功能的
- 2. SQLAlchemy 0.5.8最大功能
- 3. 最大功能在Oracle
- 4. 最小/最大/步驟的功能和
- 5. T-SQL中的最小/最大功能?
- 6. jQuery中的最小/最大功能
- 7. 使用Python的子字符串最大功能
- 8. 在Python中沒有cmp關鍵字最大功能
- 9. 瞭解Python字典上的最大功能操作
- 10. 查找最大的函數是一個最大的功能
- 11. 使用功能最大的CakePHP
- 12. Variadic模板最大功能麻煩
- 13. 方案最大功能(遞歸)
- 14. Oracle 12中的最大功能
- 15. 帶有最大功能的更新
- 16. MFC最大化窗口功能
- 17. Linux:功能最強大的調試器
- 18. 塊窗口最大化功能? (完全)
- 19. 最大功能的Django模型
- 20. PostgreSQL的最偉大的功能
- 21. Memcached最強大的功能是什麼?
- 22. db2中是否有'最大'的功能?
- 23. 「查找」功能的最大數量?
- 24. 的Python /大熊貓.agg功能
- 25. Python:將大功能分解爲段
- 26. 使用Python最小化功能
- 27. Python功能
- 28. 大熊貓發現GROUPBY最大值和應用功能
- 29. Redis在大型DEL&HMSET功能上消耗最大內存
- 30. SQL LISTAGG最小和最大功能問題
感謝細節:) – 2012-04-19 12:00:41
謝謝! 但比較:[1] <(1)返回false。任何想法爲什麼? – 2012-04-19 12:08:01
@Sagar,注意'(1)'實際上是一個int。根據Python的語法,你必須有一個逗號來區分它作爲一個元組,所以試試'[1] <(1,)'。儘管如此,list和tuple是不同類型的對象,所以大概他們會使用它們類型的id進行比較。 – 2012-04-19 14:30:40