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)
这种理解怎么样?
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.x和Python 3.x发行版,使其更易于维护.