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}