python - 使用 Python 创建 3D 数组

标签 python arrays python-2.7 multidimensional-array

我想在 Python (2.7) 中创建一个 3D 数组,以便像这样使用:

distance[i][j][k]

数组的大小应该是我拥有的变量的大小。 (nnn)

我尝试使用:

distance = [[[]*n]*n]

但这似乎不起作用。

我只能使用默认库,而乘法(即,[[0]*n]*n)不起作用,因为它们链接到同一个指针,我需要所有的值(value)观是个人的

最佳答案

您应该使用 list comprehension :

>>> import pprint
>>> n = 3
>>> distance = [[[0 for k in xrange(n)] for j in xrange(n)] for i in xrange(n)]
>>> pprint.pprint(distance)
[[[0, 0, 0], [0, 0, 0], [0, 0, 0]],
 [[0, 0, 0], [0, 0, 0], [0, 0, 0]],
 [[0, 0, 0], [0, 0, 0], [0, 0, 0]]]
>>> distance[0][1]
[0, 0, 0]
>>> distance[0][1][2]
0

您可以生成一个数据结构,其中包含一个看起来像您尝试过的语句的语句,但它会产生副作用,因为内部列表是按引用复制的:

>>> distance=[[[0]*n]*n]*n
>>> pprint.pprint(distance)
[[[0, 0, 0], [0, 0, 0], [0, 0, 0]],
 [[0, 0, 0], [0, 0, 0], [0, 0, 0]],
 [[0, 0, 0], [0, 0, 0], [0, 0, 0]]]
>>> distance[0][0][0] = 1
>>> pprint.pprint(distance)
[[[1, 0, 0], [1, 0, 0], [1, 0, 0]],
 [[1, 0, 0], [1, 0, 0], [1, 0, 0]],
 [[1, 0, 0], [1, 0, 0], [1, 0, 0]]]

关于python - 使用 Python 创建 3D 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10668341/

相关文章:

windows - Ansible:无法在 Windows 节点上执行 ping [SSL:CERTIFICATE_VERIFY_FAILED]

python - 代码库应用更新机制设计

python - 如何在 python 中使用 lzop 压缩和解压缩文件?

Java 关于对象作用域和对象修改

c - 如何将二维数组的特定行作为一维数组传递给 C 中的函数?

python - 在 Pillow 中确定带有换行符的字符串的像素高度

python - 使用 pandas 在 for 循环中读取 csv

python - 在 Django 中,我的静态文件很大(超过 500K 个文件),我该如何分配负载?

c++ - 如何在 C++ 程序中捕获负整数输入?

python - 如何将用户输入转换为 python 2.7 中的函数