如何创建可容纳10个元素的空列表?
之后,我想在该列表中分配值。例如:
xs = list()
for i in range(0, 9):
xs[i] = i
但是,这会导致IndexError:list赋值索引超出范围。为什么?
编者按:
在Python中,列表没有设置容量,但无法分配给尚未存在的元素。这里的答案显示了创建一个列表的代码,其中包含10个稍后要替换的“伪”元素。然而,遇到这个问题的大多数初学者实际上只是想通过向列表中添加元素来构建列表。这应该使用.append方法来完成,尽管通常会有特定于问题的方法来更直接地创建列表。请参阅为什么此迭代列表增长代码会导致IndexError:列表分配索引超出范围?如何重复向列表中添加元素?详细信息。
从技术上讲,它不是一个列表,但在功能上与列表相似,并且长度固定
from collections import deque
my_deque_size_10 = deque(maxlen=10)
如果它已满,即获得10个项目,则添加另一个项目会导致项目@index 0被丢弃。第五。。但也可以在任意方向上追加。用于say
统计数据的滚动平均值在列表上滑动窗口,直到与另一个deque对象匹配。
如果您需要一个列表,那么当列表满时,只需使用列表(deque对象)
有两种“快速”方法:
x = length_of_your_list
a = [None]*x
# or
a = [None for _ in xrange(x)]
看起来[None]*x更快:
>>> from timeit import timeit
>>> timeit("[None]*100",number=10000)
0.023542165756225586
>>> timeit("[None for _ in xrange(100)]",number=10000)
0.07616496086120605
但如果你对一个范围(例如[0,1,2,3,…,x-1])很满意,那么范围(x)可能是最快的:
>>> timeit("range(100)",number=10000)
0.012513160705566406