IndexError:列表分配索引超出范围

请考虑下面的代码:

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 

我猜这是简单的,我不明白。 有人能清除它吗?

j是一个空列表,但是你正试图在第一次迭代中写入元素[0] ,这还不存在。

尝试以下方法,将新元素添加到列表的末尾:

 for l in i: j.append(l) 

你的另一个select是初始化j

 j = [None]*max(i) 

j.append(l)而不是j[k] = l并且完全避免k

对于你发布的例子,你也可以使用列表理解:

 j = [l for l in i] 

或者只是做一个副本:

 j = i[:] 
 j.append(l) 

还要避免使用小写的“L”,因为它们很容易与1混淆

我想Python的方法插入你在找什么;

在位置i插入元素x。

 array = [1,2,3,4,5] array.insert(1,2) print array # prints [2,2,3,4,5] 

还有一种方法:

 j=i[0] for k in range(1,len(i)): j = numpy.vstack([j,i[k]]) 

在这种情况下, j将是一个numpy数组

对于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}