请考虑以下代码:
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
我想这是一些我不理解的简单的东西。有人能把它弄清楚吗?
发布于 2011-04-14 02:03:47
j
是一个空列表,但您试图在第一次迭代中写入元素[0]
,但该元素尚不存在。
请尝试执行以下操作,将新元素添加到列表的末尾:
for l in i:
j.append(l)
当然,如果您只想复制一个现有的列表,那么在实践中您永远不会这样做。你只需要做:
j = list(i)
或者,如果您希望像使用其他语言中的数组一样使用Python列表,那么您可以预先创建一个列表,将其元素设置为空值(在下面的示例中为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
对象不允许您为不存在的索引赋值。
发布于 2012-01-27 10:15:00
另一种选择是初始化j
j = [None] * len(i)
发布于 2011-04-14 02:03:13
使用j.append(l)
而不是j[k] = l
,完全避免使用k
。
https://stackoverflow.com/questions/5653533
复制相似问题