类似于C/C++等其他编程语言,在Python中,我们是否有一种无需初始化即可声明数组的方法(类似于data[1][3]
(?在这里,我有一个创建空 2D 列表的片段:
data=[[]]
data[0]=[1,2,3]
data[1]=[3,4,5] //this will create an error since its out of bound access
就我而言,我想静态定义行数和列数。我相信 append()
API 可能会有所帮助,但更好的是传统的初始化方式(因为我的输入数据是从其他地方复制的(。我相信,如果我能指定data[[]]
大小,它将解决问题。
几件事:
- Python 没有变量声明。变量是动态类型的。
- Vanilla Python 没有数组。如果要使用数组,
numpy
比嵌套列表高效得多
现在,关于你的问题,你可以使用列表推导来搭建"数组"的结构:
y, x = columns, rows
[['_' for _ in range(y)] for _ in range(x)]
或
[[None for _ in range(y)] for _ in range(x)]
正如@Tomothy所指出的,这可以简化一点:
[[None] * y for _ in range(x)]
使用推导式初始化列表:
[[None for _ in range(columns)] for _ in range(rows)]
例:
>>> data = [[None for _ in range(3)]]
>>> data
[[None, None, None]]
>>> data[1]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
请注意,在python中,您需要用一些默认值填充它们,我使用了None
但是您可以使用任何适合您的算法的值。