如何按列表大小和混合列表中的列表中的元素对列表列表进行排序

时间:2017-09-08 13:05:20

标签: python list sorting

我有以下列表

list = [1, 2, 3, [3, [1, 2]]]

结果将是:

[[[2, 1], 3], 3, 2, 1]

如何按列表大小和按元素排序列表?

1 个答案:

答案 0 :(得分:3)

以下是递归对列表进行排序的一种方法:

def recursive_sort(item):
  if isinstance(item, list):
      item[:] = sorted(item, key=recursive_sort)
      return 0, -len(item)
  else:
      return 1, -item

lst = [1, 2, 3, [3, [1, 2], [2, 3, 6]]]      
print(sorted(lst, key=recursive_sort))
# [[[6, 3, 2], [2, 1], 3], 3, 2, 1]

警告:这是一个学术练习,绝不应该用于生产代码。排序期间列表的状态(至少在CPython中使用Timsort)是未定义,因此您不应指望它始终有效。