澄清比较不同类型的对象

时间:2010-11-03 04:29:36

标签: python

以下句子让我感到困惑(来自Guido在python.org上的教程):

  

“请注意比较对象   不同类型是合法的。结果   是确定性的但是随意的:   类型按名称排序。从而,   列表总是小于a   字符串,字符串总是更小   比元组等“比元组等”。

这意味着:

a=[90]
b=(1)
a<b

结果应为True。但事实并非如此! 你可以帮助我吗?不是一个元组,等等。“

此外,“结果是确定的但是随意的”是什么意思?

2 个答案:

答案 0 :(得分:6)

(1)int。您可能需要(1,),这是tuple

答案 1 :(得分:3)

请注意,您不应再依赖此行为。一些内置类型无法与其他内置函数进行比较,新数据模型提供了一种使比较器功能过载的方法。

>>> set([1]) > [1]
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
TypeError: can only compare to a set

此外,它在py3k中完全删除了:

>>> [1,2] > (3,4)
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
TypeError: unorderable types: list() > tuple()
>>> [1,2] > "1,2"
Traceback (most recent call last):
   File "<stdin>", line 1, in <module>
TypeError: unorderable types: list() > str()