在Python中赋值列表
pt=[2]
pt[0]=raw_input()
当我这样做,并输入一个值,比如1011时,它提示我“列表索引错误 - 列表赋值索引超出范围”。我想知道这是为什么?我觉得我没有正确地给列表赋值。那么在Python中,怎么才能正确地创建一个包含两个元素的数组呢?
2 个回答
3
你想要做的事情不太清楚。我猜测你可能是想这样做:
pt = [2] # Create array with two elements?
for i in range(2):
pt[i] = raw_input()
注意,第一行并不是创建一个包含两个元素的数组,而是创建了一个只包含一个元素的列表:数字2。你可以试试这样做,虽然还有更符合Python风格的方法:
pt = [None] * 2
for i in range(2):
pt[i] = raw_input()
4
试试这个:
pt = list()
pt.append(raw_input())
pt.append(raw_input())
print pt
现在你在列表里有两个元素。当你对Python的语法更熟悉后,你可能会这样写:
pt = [raw_input(), raw_input()]
另外,注意列表和Java或C语言中的数组是不同的:列表是动态增长的。你在创建新列表时不需要声明大小。
顺便说一下:我在交互式命令行中试了你的例子。它可以运行,但可能和你预期的不一样:
>>> 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
方法。