我想从较低的顺序对多重列表进行排序,但我无法在一行中生成结果

2024-09-29 16:25:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我想解决这个问题

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]]像这样


热门问题