如何创建任意深度 D 的嵌套列表,其中每个条目包含 D-1 个列表

How to create a nested list of arbitrary depth, D, in which each entry contains D-1 lists

假设我从 initial_list = [None] * 4 列表开始。通过设置 depth = D,我如何定义一个例程来创建任意深度的嵌套列表,使得第一个列表的每个条目都包含 x-1 个级别,每个级别本身就是其他 4 个元素的列表.之后允许切片数据的东西,例如 myPrecious[0][0][3][0],myPrecious[3][2][1][0],... ?

您可以在循环中使用列表理解:

import copy

def build_list(depth, nb_per_level, fill=0):
  l = [fill for _ in range(nb_per_level)]
  for _ in range(depth):
    l = [copy.deepcopy(l) for _ in range(nb_per_level)]
  return l

>>> build_list(2, 3, 7)
[[[7, 7, 7], [7, 7, 7], [7, 7, 7]], [[7, 7, 7], [7, 7, 7], [7, 7, 7]], [[7, 7, 7], [7, 7, 7], [7, 7, 7]]]
>>> build_list(1, 5, 7)
[[7, 7, 7, 7, 7], [7, 7, 7, 7, 7], [7, 7, 7, 7, 7], [7, 7, 7, 7, 7], [7, 7, 7, 7, 7]]
>>> build_list(0, 5, 7)
[7, 7, 7, 7, 7]
>>> my_precious = build_list(3, 4, 7)
>>> my_precious[3][2][1][0]
7

请注意 copy.deepcopy(l) 在列表理解中的重要性,而不仅仅是 l,它会复制列表而不是重复使用相同的列表。关于不进行深层复制的危险的相关问题:List of lists changes reflected across all lists unexpectedly?