【发布时间】:2021-10-20 14:08:09
【问题描述】:
为什么初始化数组arr 在作为列表解析完成时会起作用(我认为这是以下示例的内容--不确定),但在每个数组位置单独初始化时不起作用?
例如,这有效: (一)
arr=[]
arr=[0 for i in range(5)]
但是(b),
arr=[]
arr[0]=0
arr[1]=0
等等,没有。
arr=[0 for i in range(5)] 指令本质上不是一举完成了上面 (b) 中所做的事情吗?
我意识到需要预定义(或分配)数组大小。所以,我可以理解类似
arr= [0]*5
或使用 numpy,
arr = np.empty(10, dtype=object)
工作。 但是,我看不到 (a) 如何“提前”预分配数组维度。 python如何解释上面的(a) vs. (b)?
【问题讨论】:
-
好吧,您必须查看列表理解是如何实现的。在引擎盖下它可能附加到数组或其他东西,不确定。您的 b) 不起作用,因为您试图访问数组中不存在的元素。如果您想要与 a) 中相同的效果,则必须使用 append 或一些等效功能
标签: python arrays list-comprehension array-initialization