小编典典

在 Python 中创建一个具有一定大小的空列表

all

我想创建一个可以容纳 10 个元素的空列表(或任何最好的方法)。

之后我想在该列表中分配值,例如这应该显示 0 到 9:

s1 = list();
for i in range(0,9):
   s1[i] = i

print s1

但是当我运行这段代码时,它会产生一个错误,或者在另一种情况下它只是显示[](空)。

有人可以解释为什么吗?


阅读 314

收藏
2022-03-02

共1个答案

小编典典

您不能分配给类似 的列表lst[i] = something,除非该列表已经至少使用i+1元素进行了初始化。您需要使用 append
将元素添加到列表的末尾。lst.append(something).

(如果您使用字典,则可以使用赋值符号)。

创建一个空列表:

>>> l = [None] * 10
>>> l
[None, None, None, None, None, None, None, None, None, None]

为上述列表的现有元素赋值:

>>> l[1] = 5
>>> l
[None, 5, None, None, None, None, None, None, None, None]

请记住,类似的东西l[15] = 5仍然会失败,因为我们的列表只有 10 个元素。

range(x) 从 [0, 1, 2, … x-1] 创建一个列表

# 2.X only. Use list(range(10)) in 3.X.
>>> l = range(10)
>>> l
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

使用函数创建列表:

>>> def display():
...     s1 = []
...     for i in range(9): # This is just to tell you how to create a list.
...         s1.append(i)
...     return s1
... 
>>> print display()
[0, 1, 2, 3, 4, 5, 6, 7, 8]

列表理解(使用方块,因为对于范围你不需要做所有这些,你可以 return range(0,9)):

>>> def display():
...     return [x**2 for x in range(9)]
... 
>>> print display()
[0, 1, 4, 9, 16, 25, 36, 49, 64]
2022-03-02