请考虑以下代码:
i = [1, 2, 3, 5, 8, 13]
j = []
k = 0
for l in i:
j[k] = l
k += 1
print j
输出(Win 7 32位上的Python 2.6.6)是:
> Traceback (most recent call last):
> j[k] = l IndexError: list assignment index out of range
我想这很简单,我不明白。有人可以清理它吗?
答案 0 :(得分:260)
j
是一个空列表,但是您在第一次迭代中尝试写入元素[0]
,但尚未存在。
请尝试以下方法,将新元素添加到列表末尾:
for l in i:
j.append(l)
答案 1 :(得分:41)
您的另一个选择是初始化j
:
j = [None] * len(i)
答案 2 :(得分:20)
执行j.append(l)
而不是j[k] = l
并完全避免k
。
答案 3 :(得分:12)
你也可以使用列表理解:
j = [l for l in i]
或使用以下声明制作副本:
j = i[:]
答案 4 :(得分:7)
j.append(l)
同时避免使用小写的“L's”,因为它很容易与1的混淆
答案 5 :(得分:6)
我认为Python方法插入是您正在寻找的:
将元素x插入位置i。
array = [1,2,3,4,5]
array.insert(1,2)
print(array)
# prints [1,2,2,3,4,5]
答案 6 :(得分: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}
答案 7 :(得分:2)
还有一种方法:
j=i[0]
for k in range(1,len(i)):
j = numpy.vstack([j,i[k]])
在这种情况下,j
将是一个numpy数组
答案 8 :(得分:1)
在带有数组的python中,您只能在数组中添加元素并将其添加
答案 9 :(得分:0)
也许您需要 extend()
i=[1,3,5,7]
j=[]
j.extend(i)