Python多维数组

标签 python

<分区>

Possible Duplicate:
How to initialize a two-dimensional array in Python?

在解决一个关于二维数组的简单问题时,我在这个网站上遇到了一个解决方案,它解释了如何使用重载运算符在 Python 中声明一个。

例子:

Myarray = [[0]*3]*3

这将产生以下数组(列表)

[[0,0,0],[0,0,0],[0,0,0]]

在你使用它之前这看起来很好:

例如,如果您分配一个元素:

Myarray [0][0] = 1

你得到了意想不到的输出:

[[1,0, 0],[1,0,0] , [1,0,0]]

实际上同时分配 Myarray[1][0] 和 Myarray[2][0]

我的解决方案:

Myarray = [[][][]]
for i in range(0,3):
  for j in range (0,3):
     Myarray[i].append(0)

此解决方案按预期工作:

Marray[0][1] = 1

给你

[[1,0, 0],[0,0,0] , [0,0,0]]

是否有更简单的方法来做到这一点?这是 A 级剑桥问题的解决方案,与其他语言相比,对于学生来说似乎过于冗长。

最佳答案

使用 vanilla Python,你可以使用它,一个嵌套的列表理解

>>> m = [[0 for y in range(3)] for x in range(3)]
>>> m
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]

与您在示例中显示的相乘列表不同,它具有所需的行为

>>> m[1][0] = 99
>>> m
[[0, 0, 0], [99, 0, 0], [0, 0, 0]]

但是,如果要认真使用多维数组和/或数值编程,我建议您使用 Numpy数组。

关于Python多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13300029/

相关文章:

python - 为什么我的函数不打印

python - 如何检查变量是否包含不允许输入的字符?

Python-绘图不可用

python - 如何删除不同位置的两个斜杠

python - 在 Luigi Visualiser 中保留已完成的管道

python - 在 Django 子类中而不是在基类中强制执行唯一的外键

python - 有条件地从两个列表中选择元素的好方法?

Python 类定义的差异

python - 列出 python 模块的子模块

Python while循环,在类外打开和关闭它