在Python中赋值列表

1 投票
2 回答
5138 浏览
提问于 2025-04-15 21:24
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 方法。

撰写回答