【发布时间】:2018-02-26 10:29:45
【问题描述】:
我在 python 代码中的某个时刻感到困惑,我正在尝试构建一个返回累积和的程序,即第 i 个元素是原始列表中第一个 i+1 个元素的太阳。所以[1,2,3]的累积总和是[1,3,6],我试图构建程序及其工作,但对于第一个元素,它添加最后一个元素作为前一个元素,这让我认为这是python列表的结构什么圈子??
h=[]
a=[1,2,3,4,5,6]
for i in range(len(a)):
d=a[i]+(a[i-1]+1)
h.append(d)
print(h)
结果
[8, 4, 6, 8, 10, 12]
【问题讨论】:
-
您需要为累积值保留一个单独的变量。您将无法仅从输入列表中的前一个元素计算它。
-
您可能打算从
a中获取当前元素,从h中获取前一个元素,从而累积总和。然而,在h为空的情况下启动算法有一个明显的问题。因此,像 Paul 提到的那样保留一个单独的变量是最简单的方法。 -
不,“结构”不是圆形的,而是从后面开始的负索引。 IE。
my_list[len(my_list) - 1] == my_list[-1] -
另外值得注意的是,您可以使用
itertools.accumulate来实现这一点,即list(accumulate(a))。