gpt4 book ai didi

python - 是否可以使用 reduce 对列表进行排序?

转载 作者:太空狗 更新时间:2023-10-29 21:30:19 24 4
gpt4 key购买 nike

我得到了这个作为练习。我当然可以使用 sorted() 或 Python 标准库中的其他方式对列表进行排序,但在这种情况下我不能。我认为我只应该使用reduce()

from functools import reduce
arr = [17, 2, 3, 6, 1, 3, 1, 9, 5, 3]
sorted_arr = reduce(lambda a,b : (b,a) if a > b else (a,b), arr)

我得到的错误:

TypeError: '>' not supported between instances of 'tuple' and 'int'

这是预料之中的,因为我的 reduce 函数将一个元组插入到 int 数组中,而不是 2 个单独的整数。然后将元组与一个整数进行比较...

有没有办法将 2 个数字插入列表中,并且只对列表中的第二个数字运行该函数?或者使用 reduce() 交换数字的方法?

文档对 reduce 函数的描述很少,所以我现在没有想法。 https://docs.python.org/3/library/functools.html?highlight=reduce#functools.reduce

最佳答案

这是使用 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 将输出初始化为空列表。

关于python - 是否可以使用 reduce 对列表进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56045986/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com