类似于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[[]]
中指定尺寸,它将解决此问题。
答案 0 :(得分:1)
几件事:
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)]
答案 1 :(得分:0)
使用理解来初始化列表:
[[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
,但是您可以使用适合您算法的任何东西。