首页 > 解决方案 > 我想从较低的顺序对多列表进行排序,但我无法在一行中产生结果

问题描述

我想解决这个问题。

def quicksort(xs, key=(lambda x:x)):
 if len(xs) > 1:
    pivot = xs[0]
    (left, right) = partition(key(pivot), xs[1:], key=key)
    return quicksort(left,key=key) + [pivot] + quicksort(right,key=key)
 else:
    return xs
def partition(pivot, xs, key):
 left  = [x for x in xs if key(x) <= pivot]
 right = [x for x in xs if key(x) >  pivot]
 return (left, right)

quicksort([1,[1,[5,[3]],7,9,4],[1,2,4,[3]],[1,[3,5],4,[2,[4]]]], lambda x:[max([(str(x[:i]).count('[')-str(x[:i]).count(']')) for i in range(len(str(x)))])])

我想要的结果是 1,[1,3,[5]],[1,3,5[6,[7]]] 像这样

标签: python

解决方案


推荐阅读