这是使用以下方法对列表进行排序的一种方法reduce
:
arr = [17, 2, 3, 6, 1, 3, 1, 9, 5, 3]
sorted_arr = reduce(
lambda a, b: [x for x in a if x <= b] + [b] + [x for x in a if x > b],
arr,
[]
)
print(sorted_arr)
#[1, 1, 2, 3, 3, 3, 5, 6, 9, 17]
在每个归约步骤中,构建一个新的输出列表,该列表连接所有小于或等于的值的列表b
, [b]
,以及所有大于的值的列表b
。使用可选的第三个参数reduce
将输出初始化为空列表。