回答
在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. Python 3的最小和最大的内置功能
- 2. Python内置最大/最小功能的默认键
- 3. 关键字功能/最大
- 4. 最大功能在ORACLE
- 5. 最大功能重复值
- 6. SQL Server的最大功能
- 7. 哈希表最大功能
- 8. xPath和最大功能
- 9. 查找最大功能的
- 10. SQLAlchemy 0.5.8最大功能
- 11. 最大功能在Oracle
- 12. 最小/最大/步骤的功能和
- 13. T-SQL中的最小/最大功能?
- 14. 哈斯克尔:最大/最小功能
- 15. jQuery中的最小/最大功能
- 16. 使用Python的子字符串最大功能
- 17. Python中的最大功能返回错误的结果
- 18. 在Python中没有cmp关键字最大功能
- 19. 了解Python字典上的最大功能操作
- 20. 查找最大的函数是一个最大的功能
- 21. 在Java中最大化功能
- 22. 使用功能最大的CakePHP
- 23. Linux:功能最强大的调试器
- 24. 达到最大嵌套功能级别
- 25. Laravel 5.2,最大功能嵌套级别
- 26. sql - 聚合最大功能和组
- 27. 带有最大功能的更新
- 28. 使用fminsearch最大化功能
- 29. “查找”功能的最大数量?
- 30. SQL INNER JOIN DISTINCT与最大功能
感谢细节:) – 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