我有以下列表
list = [1, 2, 3, [3, [1, 2]]]
结果将是:
[[[2, 1], 3], 3, 2, 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)是未定义,因此您不应指望它始终有效。