以下代码对我适用:
# -*- coding: utf-8 -*-
N = int(raw_input("N="))
l=[]
i = 0
while i<N:
n = raw_input("e"+str(i)+"=")
l.append(n)
i = i+1
print l
但是,为什么我不能用l[i] = raw_input("e"+str(i)+"=")
来简化它呢?
示例:(不起作用)
# -*- coding: utf-8 -*-
N = int(raw_input("N="))
l=[]
i = 0
while i<N:
l[i] = raw_input("e"+str(i)+"=")
i = i+1
print l
必须先存在一个值,然后才能分配给它。第一次循环,
i
为0,l[0]
尚不存在。只能使用索引(例如
obj[x]
)来访问或修改已存在于list
中的项。例如,以下操作有效,因为我们正在访问的列表中的位置已经存在:但是,在a
list
中不存在的位置访问或修改项将不起作用:如果要简化代码,请尝试:(它使用list comprehension)
我想在你的第二个例子中,我想你的意思是为什么你不能直接分配列表元素。答案是元素没有初始化,即列表大小仍然是0。你可以的
将列表初始化为N个值为0的元素。
或者你可以:
相关问题 更多 >
编程相关推荐