【问题标题】:How can I create an empty 3d multidimensional array如何创建一个空的 3d 多维数组
【发布时间】:2017-05-04 17:43:43
【问题描述】:

这段代码是我尝试创建一个空的 3d 数组。

n=3
board = [[[ 0 for _ in range(n)]
            for _ in range(n)]
            for _ in range(n)]
print(board)

所以,这正是我正在寻找的 3d 数组,其尺寸为 n x n x n,但列表中填充了 0,如果我取出 0,则会发生错误。我将如何创建同样的列表但为空?

【问题讨论】:

  • 我的眼睛受伤了……
  • 您正在寻找的样本输出格式究竟是什么?我最好的猜测是你想要[[ [] for _ in range(n)] for _ in range(n)]
  • 你不能那样做。 Python 不能那样工作。
  • 你认为长度为n的空列表是什么样的?
  • @JohnGordon:它不会创建新列表,而是具有相同引用的嵌套列表

标签: python list python-3.x list-comparison


【解决方案1】:

您需要使用[] 而不是0 作为:

n = 5
empty_list = [[[ [] for _ in range(n)] for _ in range(n)] for _ in range(n)]

empty_list 持有的价值将是:

[[[[], [], [], [], []], 
  [[], [], [], [], []], 
  [[], [], [], [], []], 
  [[], [], [], [], []], 
  [[], [], [], [], []]], 
# Repeated 4 more times 

例如:

>>> empty_list[0][0][0]  # Access element with nest level 3 in list
[]

【讨论】:

  • 如果我尝试访问 empty_list[0][0][0] 它将超出范围。我正在寻找与您在上面所做的完全一样的东西,但是可以访问到第三级的索引
  • 我认为在上面的帖子中,您创建了一个 2d 列表,其中只有额外的括号,而不是 3d 列表
  • 这不是一个带括号的 3d 列表吗?
  • 按照我对 3D 的定义;我之前提到的解决方案是 3D 列表。这是一个 4D 列表。或者,换句话说,您可以说 3D 列表,其值为 空列表
  • 如果我想以上面显示的格式打印,每个二维列表都有自己的行,我该怎么做?
猜你喜欢
  • 2020-04-21
  • 1970-01-01
  • 2018-06-17
  • 1970-01-01
  • 1970-01-01
  • 2012-03-09
  • 2022-12-04
  • 1970-01-01
  • 2022-01-04
相关资源
最近更新 更多