为什么此迭代的列表增长代码使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)
当然,如果您只想复制一个现有列表,则您永远不会在实践中这样做。您只需执行以下操作:
j = list(i)
另外,如果您想像其他语言的数组一样使用Python列表,则可以预先创建一个列表,并将其元素设置为空值(在下面的示例中为6),然后覆盖特定位置的值:
i = [1,2,3,5,8,13]
j = [None] * len(i)
#j == [None,None,None]
k = 0

for l in i:
   j[k] = l
   k += 1
要意识到的是,“ 8”对象将不允许您将值分配给不存在的索引。     ,您的另一个选择是初始化
j
j = [None] * len(i)
    ,用ѭ11代替ѭ12并完全避免ѭ13。     ,您还可以使用列表理解:
j = [l for l in i]
或使用以下语句复制它:
j = i[:]
    ,
j.append(l)
还要避免使用小写的“ L”,因为它们很容易与1混淆。     ,您可以为j使用字典(类似于关联数组)
i = [1,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}
    ,我认为您正在寻找Python方法插入项: 在位置i处插入元素x。 list.insert(i,x)
array = [1,4,5]

array.insert(1,20)

print(array)

# prints [1,20,5]
    ,另一种方式:
j=i[0]
for k in range(1,len(i)):
    j = numpy.vstack([j,i[k]])
在这种情况下,“ 2”将是一个numpy数组     ,在带有数组的python中,您只能在数组中追加和添加元素     ,也许你需要extend()
i=[1,7]
j=[]
j.extend(i)
    

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...