def partition(li, f, a=[], b=[]):
if len(li) == 0: return a, b
x, *xs = li
if f(x):
return partition(xs, f, [*a, x], b)
return partition(xs, f, a, [*b, x])
def qsort(li):
if len(li) == 0: return []
p, *xs = li
lt, gt = partition(xs, lambda x: x <= p)
# lt = [x for x in xs if x <= p]
# gt = [x for x in xs if x > p]
return [*qsort(lt), p, *qsort(gt)]
li = [3,1,2,5,4,0]
print(li)
print(qsort(li))
print(partition(li, lambda x: x % 2 == 1))
To embed this project on your website, copy the following code and paste it into your website's HTML: