Python排序和排序 - 如何精确排序列表列表?

Fra*_*fer 2 python sorting list

为了对元素列表中的列表进行排序,Python中使用了哪些精确规则?这可以表示为'key'或'cmp'函数吗?问题来自于需要考虑两件事:长度和价值在他们的位置.

sorted([
   [ 0, 1, 2, 3 ],  # 1st line: longer list
   [ 0, 1 ],        # 2nd line: shorter list
   [ 0, 2 ]         # 3rd line: suspected last
])
Run Code Online (Sandbox Code Playgroud)

假设第二行在第一行之前排序是否安全?假设第三行总是最后排序是否安全?

注意,这不是关于稳定性!上述具体情况表现如上所述.但是,那里的规则可以被认为是一般性的吗?python在这里适用的准确规则是什么?

依据以下定义Lexicographical Order(感谢Ashniwi):

为了比较不同长度的序列,较短的序列通常在末尾填充足够的"空白"(特殊符号被视为小于A的每个元素).这种比较不同长度序列的方法总是用在字典中.然而,在组合学中,经常使用另一种惯例,其中较短的序列总是小于较长的序列.这种词典顺序的变体有时被称为短序.

Python是否使用' shortlex order '.除了实际例子之外,该假设的证明在哪里?

Ruu*_*ong 5

默认情况下,sorted使用__lt__比较的项的方法.根据Python文档,具有可比元素的列表按字典顺序进行比较.所以,是的,语言保证在较短的字符串中将在较长的字符串之前排序.