gpt4 book ai didi

python - 给定条件递增前 n 个列表元素

转载 作者:行者123 更新时间:2023-11-28 17:31:19 26 4
gpt4 key购买 nike

例如我有一个列表

l = [10, 20, 30, 40, 50, 60]

我需要在给定条件的情况下递增列表的前 n 元素。条件独立于列表。例如,如果 n = 3,列表 l 应该变成:

l = [11, 21, 31, 40, 50, 60]

我知道我可以在列表的每个元素上使用 for 循环来完成。但我需要进行大约 1.5 亿次这样的操作。所以,我正在寻找一种更快的方法来做到这一点。非常感谢任何帮助。提前致谢

最佳答案

这是 NumPy 中的操作聚合实现:

initial_array = # whatever your l is, but as a NumPy array
increments = numpy.zeros_like(initial_array)
...
# every time you want to increment the first n elements
if n:
increments[n-1] += 1
...
# to apply the increments
initial_array += increments[::-1].cumsum()[::-1]

这是O(ops + len(initial_array)),其中ops是增量操作的数量。除非您只对列表的一小部分进行少量增量,否则这应该快得多。与朴素的实现不同,它不允许您在应用增量之前检索元素值;如果您需要这样做,您可能需要一个基于 BST 或类似 BST 结构的解决方案来跟踪增量。

关于python - 给定条件递增前 n 个列表元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34162331/

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