gpt4 book ai didi

python - 运行总计的列表理解

转载 作者:IT老高 更新时间:2023-10-28 20:23:20 25 4
gpt4 key购买 nike

我想从一个数字列表中得到一个运行总计。

出于演示目的,我从使用 range

的数字顺序列表开始
a = range(20)

runningTotal = []
for n in range(len(a)):
new = runningTotal[n-1] + a[n] if n > 0 else a[n]
runningTotal.append(new)

# This one is a syntax error
# runningTotal = [a[n] for n in range(len(a)) if n == 0 else runningTotal[n-1] + a[n]]

for i in zip(a, runningTotal):
print "{0:>3}{1:>5}".format(*i)

产量

  0    0
1 1
2 3
3 6
4 10
5 15
6 21
7 28
8 36
9 45
10 55
11 66
12 78
13 91
14 105
15 120
16 136
17 153
18 171
19 190

如你所见,我在每次循环迭代中初始化一个空列表[],然后append()。有没有更优雅的方法,比如列表推导?

最佳答案

列表推导式没有很好的(干净、可移植的)方式来引用它正在构建的列表。一种好的和优雅的方法可能是在生成器中完成这项工作:

def running_sum(a):
tot = 0
for item in a:
tot += item
yield tot

当然,要将其作为列表获取,请使用 list(running_sum(a))

关于python - 运行总计的列表理解,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3432830/

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