首页 > 解决方案 > 没有初始化的 Python 列表声明

问题描述

与 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

解决方案


几件事:

  1. Python 没有变量声明。变量是动态类型的。
  2. 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)]

推荐阅读