如何创建一个列表,其中每个新元素作为最后一个元素加上一个常量?

Dav*_*dC. 0 python list python-2.7

鉴于以下变量:

a_4th =  6.08
delta_a = 0.052
Run Code Online (Sandbox Code Playgroud)

我想创建一个包含以下内容的列表:

a = [a_4th, a_5th, a_6th, a_7th ... ]
Run Code Online (Sandbox Code Playgroud)

哪里:

a_5th = a_4th + delta_a
a_6th = a_5th + delta_a
a_7th = a_6th + delta_a
Run Code Online (Sandbox Code Playgroud)

这段代码:

a = []  # create the empty list
a.insert(0, a_4th) # initialize the 1st item of the list

for i in xrange (1,19):   # I would like the list to be 18 items long. 
                          # a[0] is defined in the previous line.
  a[i] = a[i-1] + delta_a 
Run Code Online (Sandbox Code Playgroud)

给出了这个错误:

Traceback (most recent call last):
  File "so.py", line 8, in <module>
    a[i] = a[i-1] + delta_a 
IndexError: list assignment index out of range
Run Code Online (Sandbox Code Playgroud)

Ev.*_*nis 5

这种理解怎么样?

a_4th =  6.08
delta_a = 0.052
a = [a_4th + i * delta_a for i in range(20)]
Run Code Online (Sandbox Code Playgroud)

或者你的代码,修复:

a_4th =  6.08
delta_a = 0.052
a = [a_4th]
for i in xrange (1,19):
  a.append(a[i-1] + delta_a)  # or the elegant a.append(a[-1] + delta_a) kudos @Prune
Run Code Online (Sandbox Code Playgroud)

另请注意,从列表理解的速度优势来看,它也适用于两者Python 2.xPython 3.x发行版,使其更易于维护.