pt=[2]
pt[0]=raw_input()
当我这样做,并给出输入假设1011,它表示列表索引错误 - “列表分配索引超出范围”。我可以知道为什么吗?我想我无法正确分配清单。那么如何在python中分配2个元素的数组?
答案 0 :(得分:4)
试试这个:
pt = list()
pt.append(raw_input())
pt.append(raw_input())
print pt
您现在列表中有两个元素。一旦你更熟悉python语法,你可以把它写成:
pt = [raw_input(), raw_input()]
另外,请注意,不要将列表与Java或C中的数组混淆:列表会动态增长。创建新列表时不必声明大小。
BTW:我在交互式shell中尝试了你的例子。它有效,但可能没有你想象的那样:
>>> pt = [2]
>>> pt[0] = raw_input()
1011
>>> pt
['1011']
我猜你认为pt = [2]
会创建一个长度为2的列表,所以pt[1] = raw_input()
会像你提到的那样失败:
>>> pt = [2]
>>> pt[0] = raw_input()
1011
>>> pt[1] = raw_input() # this is an assignment to an index not yet created.
1012
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list assignment index out of range
实际上,pt = [2]
会创建一个包含一个元素的列表,其索引2
的值为0
:
>>> pt = [2]
>>> pt
[2]
>>>
所以你可以如上所示分配给索引0,但是分配给索引1将不起作用 - 使用append
附加到列表。
答案 1 :(得分:3)
目前尚不清楚你要做什么。我的猜测是你试图这样做:
pt = [2] # Create array with two elements?
for i in range(2):
pt[i] = raw_input()
请注意,第一行不会创建包含两个元素的数组,它会创建一个包含一个元素的列表:数字2.您可以尝试这样做,尽管有更多Pythonic方法可以执行此操作:
pt = [None] * 2
for i in range(2):
pt[i] = raw_input()