我试着写了一些代码:
i = [1, 2, 3, 5, 8, 13] j = [] k = 0 for l in i: j[k] = l k += 1
但是我得到一个错误消息,说IndexError: list assignment index out of range,指的是代码的j[k] = l行。为什么会出现这种情况?我该怎么解决呢?
IndexError: list assignment index out of range
j[k] = l
使用j.append(l)代替j[k] = l,并完全避免k。
j.append(l)
k
j是一个空列表,但是你试图在第一次迭代中写入元素[0],这个元素还不存在。
j
[0]
尝试下面的方法,在列表的末尾添加一个新元素:
for l in i: j.append(l)
当然,如果您只想复制一个现有的列表,那么在实践中永远不会这样做。你只需要这样做:
j = list(i)
或者,如果你想像使用其他语言中的数组一样使用Python列表,那么你可以预先创建一个列表,将其元素设置为空值(在下面的例子中为None),然后覆盖特定位置的值:
None
i = [1, 2, 3, 5, 8, 13] j = [None] * len(i) #j == [None, None, None, None, None, None] k = 0 for l in i: j[k] = l k += 1
需要意识到的是,list对象不允许你为不存在的索引赋值。
list
同时也要避免使用小写的“L”,因为它们很容易与“1”混淆
你的另一个选择是初始化j:
j = [None] * len(i)
你也可以使用列表推导式:
j = [l for l in i]
或者用下面的语句复制一份:
j = i[:]
还有一种方法:
j=i[0] for k in range(1,len(i)): j = numpy.vstack([j,i[k]])
在这种情况下,j将是一个numpy数组
我认为Python方法插入就是你要找的:
将元素x插入位置i。 list.insert (i (x) < / p >
array = [1,2,3,4,5] # array.insert(index, element) array.insert(1,20) print(array) # prints [1,20,2,3,4,5]
对于j,可以使用字典(类似于关联数组)
i = [1, 2, 3, 5, 8, 13] j = {} #initiate as dictionary k = 0 for l in i: j[k] = l k += 1 print(j)
将打印:
{0: 1, 1: 2, 2: 3, 3: 5, 4: 8, 5: 13}
也许你需要扩展()
i=[1,3,5,7] j=[] j.extend(i)