要素がリストであるリストをソートするために、Pythonで使用される正確なルールは何ですか?これは 'key'または 'cmp'として表現できますか ?問題は、 の2種類があります.の長さがで、値がの位置がであることが原因です。Python sort and sorted - リストのリストはどのようにして正確にソートされていますか?
sorted([
[ 0, 1, 2, 3 ], # 1st line: longer list
[ 0, 1 ], # 2nd line: shorter list
[ 0, 2 ] # 3rd line: suspected last
])
第2行目が最初の行よりも前にソートされると考えるのは安全でしょうか? 3行目が常に最後にソートされると想定するのは安全でしょうか?
注:安定性についてではなく、です。!上記の特定のケースは、前述のように のように動作します。しかし、そこにあるルールは、 と一般的に考えられますか?ここでPythonが適用する正確なルールは何ですか?次のように定義Lexicographical Order(Ashniwiのおかげで)に依存
:、より短い配列が 通常、十分な「空白」で終わりにパディングされ、異なる長さの配列を比較するために
(特殊記号 ことAのすべての要素よりも小さく扱われます)。異なる長さの シーケンスを比較するこの方法は、常に辞書で使用されます。しかしながら、コンビナトリアルにおいて、別の慣例が頻繁に使用され、より短い配列は常により長い配列よりも小さい。 。 この辞書形式の変種は、ショートレックス オーダーと呼ばれることがあります。
Pythonで 'ショートカットオーダー'を使用していますか?その仮定の証明はどこにありますか? 実際の例を超えていますか?
あなたのを指定することができます自分の'sort'または' list.sort'の 'key'キーワード引数を使ってリスト内のリストをソートするルールです。パラメータの値は、単一のパラメータ(リストの各要素)を受け取り、各要素のソート値を返す関数です。 'len'をキーとして使用して、リスト内のリストの長さでソートすることができます。 – stamaimer
私はそう思っています...これはデフォルトのリスト順序です。つまり辞書編集的です。 – Julien
可能であればソートパラメータを指定する方が良いかもしれませんが(デフォルトではデフォルトの変更がリリースされる場合)、デフォルトがあるかもしれません。 stamaimerのコメントを参照してください。 – ChickenFeet