2

我在 Python 2.x 中有一个部分排序的元组。

为什么 Python 反转它而不是排序它?

>>> data = (u'a', (1,), 'b ', u'b', (2,), 'c ', u'c', (3,), 'd ', u'd', (4,), 'e')
>>> sorted(data) == list(reversed(data))
True

我期待 Python 3。

4

1 回答 1

11

它失败了,因为排序算法依赖于元素的总排序,这意味着传递性<

unicode 字符串、元组和字符串的顺序是不可传递的:

>>> a = 'x'
>>> b = (1,)
>>> c = u'x'
>>> a < b
True
>>> b < c
True
>>> a < c
False

即,您的列表不存在有效的排序。至少不使用默认比较器。

于 2012-04-19T23:13:48.000 回答