如何在python中获得任何大小的空数组?

use*_*648 102 python arrays dynamic-arrays

我基本上想在C中使用python等效的py:

int a[x];
Run Code Online (Sandbox Code Playgroud)

但是在python中我声明了一个数组:

a = []
Run Code Online (Sandbox Code Playgroud)

问题是我想为随机插槽分配如下值:

a[4] = 1
Run Code Online (Sandbox Code Playgroud)

但我无法用python做到这一点,因为数组是空的.

Sve*_*ach 204

如果通过"数组"你实际上是指一个Python列表,你可以使用

a = [0] * 10
Run Code Online (Sandbox Code Playgroud)

要么

a = [None] * 10
Run Code Online (Sandbox Code Playgroud)

  • 你需要注意的一个问题是`a = [obj]*N`是在数组的每个元素中出现相同的obj.如果它是一个可变的obj,并且您修改了一个项目,则所有项目都将被更改....但是,对于使用整数(或任何其他不可变类型)的示例,它没有任何区别.或者,如果您只是分配给元素,它也不是问题.(我之所以提到它,是因为我经常这样做太经常:)) (80认同)
  • 在我的第一个Python项目@dappawit上,这让我很难.注意这个警告. (3认同)

dap*_*wit 19

你无法在Python中做到你想要的(如果我没有正确读到你).您需要为列表的每个元素(或者您调用它,数组)放入值.

但是,试试这个:

a = [0 for x in range(N)]  # N = size of list you want
a[i] = 5  # as long as i < N, you're okay
Run Code Online (Sandbox Code Playgroud)

对于其他类型的列表,使用0之外的东西 None通常也是一个不错的选择.

  • 这个答案接近错误.如果Python <3.0,`range(N)`将产生一个列表. (2认同)

Dan*_*Man 15

你可以使用numpy:

导入numpy为np

空数组的示例:

import numpy as np
Run Code Online (Sandbox Code Playgroud)


小智 7

只需声明列表并附加每个元素。例如:

a = []
a.append('first item')
a.append('second item')
Run Code Online (Sandbox Code Playgroud)

  • 那么你将如何“分配随机插槽” (8认同)

小智 5

你也可以用list的extend方法扩展它.

a= []
a.extend([None]*10)
a.extend([None]*20)
Run Code Online (Sandbox Code Playgroud)