在Python中使用的精確規則是什麼,以便對列表進行排序列表,其中 的元素是列表?這可以表示爲'鑰匙'或'cmp'功能嗎?問題來自於 要考慮的兩件事情:長度和它們的值的位置。Python排序和排序 - 列表清單是如何精確排序的?
sorted([
[ 0, 1, 2, 3 ], # 1st line: longer list
[ 0, 1 ], # 2nd line: shorter list
[ 0, 2 ] # 3rd line: suspected last
])
假設第二行會在第一行之前排序是否安全? 假設第三行總是最後排序是否安全?
請注意,這是不是關於穩定性!上述具體情況如所述的那樣表現爲 。但是,那裏的規則是否可以考慮爲 一般? python在這裏應用的準確規則是什麼?
依託以下定義Lexicographical Order(感謝Ashniwi):
爲了比較不同長度的序列,較短序列 通常填充在有足夠的「空白」的端部(一個特殊的符號,它 被視爲小於A的每個元素)。字典中總是使用這種比較長度不同的 序列的方法。 然而,在組合學中,經常使用另一種約定,其中較短的序列總是小於較長的序列。 這種字典順序的變體有時被稱爲shortlex 的順序。
Python是否使用'簡短訂單'。這個假設的證明在哪裏, 超出了實際例子?
您可以指定擁有規則使用'sorted'或'list.sort'中的'key'關鍵字參數對list中的列表進行排序。參數的值是一個函數,它接受單個參數(列表中的每個元素)並返回每個元素的排序值。您可以使用'len'作爲'key'來按列表中的列表長度進行排序。 – stamaimer
我認爲是......這是默認的列表排序,即按字典順序。 – Julien
可能有一個默認值,儘管最好在可能的情況下指定排序參數(在將來的發行版中爲默認更改)。請參閱stamaimer的評論。 – ChickenFeet