在Python中初始化固定大小的数组
我想知道怎么初始化一个数组(或者说列表),虽然还没有填充具体的值,但我希望它有一个确定的大小。
比如在C语言中:
int x[5]; /* declared without adding elements*/
那在Python中我该怎么做呢?
11 个回答
65
这样做:
>>> d = [ [ None for y in range( 2 ) ] for x in range( 2 ) ]
>>> d
[[None, None], [None, None]]
>>> d[0][0] = 1
>>> d
[[1, None], [None, None]]
其他的解决方案可能会导致这种问题:
>>> d = [ [ None ] * 2 ] * 2
>>> d
[[None, None], [None, None]]
>>> d[0][0] = 1
>>> d
[[1, None], [1, None]]
110
为什么这些问题没有得到明显的答案呢?
a = numpy.empty(n, dtype=object)
这段代码创建了一个长度为 n 的数组,可以用来存储对象。这个数组的大小是固定的,不能改变或添加新的元素。特别是,它不会通过填充长度来浪费空间。这在 Python 中相当于 Java 的
Object[] a = new Object[n];
如果你真的很关心性能和空间,并且知道你的数组只会存储某些数字类型,那么你可以把 dtype 参数改成其他值,比如 int。这样,numpy 就会直接把这些元素打包到数组里,而不是让数组引用 int 对象。
426
你可以使用:
>>> lst = [None] * 5
>>> lst
[None, None, None, None, None]