我想知道我如何可以初始化一个数组(或列表),尚未与值填充,有一个定义的大小。
例如在C语言中:
int x[5]; /* declared without adding elements*/
在Python中如何做到这一点?
我想知道我如何可以初始化一个数组(或列表),尚未与值填充,有一个定义的大小。
例如在C语言中:
int x[5]; /* declared without adding elements*/
在Python中如何做到这一点?
当前回答
我想通过发布一个示例程序及其输出来帮助你
计划:
t = input("")
x = [None]*t
y = [[None]*t]*t
for i in range(1, t+1):
x[i-1] = i;
for j in range(1, t+1):
y[i-1][j-1] = j;
print x
print y
输出:
2
[1, 2]
[[1, 2], [1, 2]]
我希望这澄清了你对他们的宣言的一些非常基本的概念。 用其他特定的值初始化它们,比如用0..你可以将它们声明为:
x = [0]*10
希望能有所帮助!!;)
其他回答
一个简单的解决方案是x = [None]*length,但请注意,它将所有列表元素初始化为None。如果大小是固定的,你也可以执行x=[None,None,None,None]。但严格来说,无论采用哪种方式,都不会得到未定义的元素,因为Python中不存在这种麻烦。
我发现很容易做的一件事是我设置一个数组 例如,我喜欢的大小的空字符串
代码:
import numpy as np
x= np.zeros(5,str)
print x
输出:
['' '' '' '' '']
希望这对你有帮助:)
如果你正在使用字节,你可以使用内置的bytearray。如果使用其他整型,请查看内置数组。
明确地理解列表不是数组。
例如,如果你试图创建一个缓冲区来读取文件内容,你可以使用bytearray,如下所示(还有更好的方法,但这个例子是有效的):
with open(FILENAME, 'rb') as f:
data = bytearray(os.path.getsize(FILENAME))
f.readinto(data)
在这个代码片段中,bytearray内存被预先分配为固定长度的FILENAMEs大小(以字节为单位)。这种预分配允许使用缓冲区协议更有效地将文件读入可变缓冲区,而无需复制数组。还有更好的方法来做到这一点,但我相信这为你的问题提供了一个答案。
>>> import numpy
>>> x = numpy.zeros((3,4))
>>> x
array([[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.],
[ 0., 0., 0., 0.]])
>>> y = numpy.zeros(5)
>>> y
array([ 0., 0., 0., 0., 0.])
X是二维数组,y是一维数组。它们都是0初始化的。
你可以使用:
>>> lst = [None] * 5
>>> lst
[None, None, None, None, None]