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

Python3が待ち遠しいです。

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 に答える