请考虑以下代码:
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]在第一次迭代中写入元素,但该迭代尚不存在。
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对象将不允许你将值分配给不存在的索引。