【问题标题】:clarification on comparing objects of different types关于比较不同类型对象的说明
【发布时间】:2011-05-04 07:27:27
【问题描述】:

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

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

这意味着对于:

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

结果应该是True。但事实并非如此! 你能帮我吗?比元组等。”

另外,“结果是确定性的但任意的”是什么意思?

【问题讨论】:

  • 另外,“结果是确定性但任意”是什么意思?
  • 请不要对您发布的问题发表评论。请更新您的问题完整。然后删除你的评论。

标签: python


【解决方案1】:

(1) 是一个int。您可能指的是(1,),即tuple

【讨论】:

  • 另外,“结果是确定性但任意”是什么意思?
  • @fixxxer:这意味着给定相同的输入,您在相同的执行运行中每次都会得到相同的答案,但您不应该依赖此属性,因为它可能会在未来发生变化。跨度>
  • 实际上不,确定性部分意味着您将始终获得相同的结果(在执行运行和未来,除非对 Python 语言进行更改)...任意只是意味着顺序没有特别的意义,用这种方式比较对象可能没有用。
【解决方案2】:

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

>>> 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()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多