问题描述
|
请考虑以下代码:
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)