我来到这里是因为我想看看如何嵌套任意数量的列表。上面有很多解释和具体例子,但是你可以用下面的递归函数来泛化N维list of lists of ...
import copy
def list_ndim(dim, el=None, init=None):
if init is None:
init = el
if len(dim)> 1:
return list_ndim(dim[0:-1], None, [copy.copy(init) for x in range(dim[-1])])
return [copy.deepcopy(init) for x in range(dim[0])]
你第一次调用这个函数是这样的:
dim = (3,5,2)
el = 1.0
l = list_ndim(dim, el)
其中(3,5,2)
是结构维度的元组(类似于 numpyshape
参数),并且1.0
是您希望用于初始化结构的元素(也适用于 None )。请注意,该init
参数仅由递归调用提供以继承嵌套的子列表
上面的输出:
[[[1.0, 1.0], [1.0, 1.0], [1.0, 1.0], [1.0, 1.0], [1.0, 1.0]],
[[1.0, 1.0], [1.0, 1.0], [1.0, 1.0], [1.0, 1.0], [1.0, 1.0]],
[[1.0, 1.0], [1.0, 1.0], [1.0, 1.0], [1.0, 1.0], [1.0, 1.0]]]
设置特定元素:
l[1][3][1] = 56
l[2][2][0] = 36.0+0.0j
l[0][1][0] = 'abc'
结果输出:
[[[1.0, 1.0], ['abc', 1.0], [1.0, 1.0], [1.0, 1.0], [1.0, 1.0]],
[[1.0, 1.0], [1.0, 1.0], [1.0, 1.0], [1.0, 56.0], [1.0, 1.0]],
[[1.0, 1.0], [1.0, 1.0], [(36+0j), 1.0], [1.0, 1.0], [1.0, 1.0]]]
上面展示了列表的非类型化性质