以下句子让我感到困惑(来自Guido在python.org上的教程):
“请注意比较对象 不同类型是合法的。结果 是确定性的但是随意的: 类型按名称排序。从而, 列表总是小于a 字符串,字符串总是更小 比元组等“比元组等”。
这意味着:
a=[90]
b=(1)
a<b
结果应为True
。但事实并非如此!
你可以帮助我吗?不是一个元组,等等。“
此外,“结果是确定的但是随意的”是什么意思?
答案 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()