如果我想创建一个像list = [[[],[]],[[],[]]]
这样的3层嵌套列表,那么适当的方法是什么?我看到其他人发布了2层嵌套列表的解决方案lst = [[] for _ in xrange(a)]
。是否有更通用的方法来创建此嵌套列表而不确定第三层中有多少列表?
另外,有没有办法在第三层创建不等数量的列表?例如:list = [[[],[]],[]]
,其中len(list[0])=2
和len(list[1])=0
答案 0 :(得分:3)
您可以使用Python的算术运算符来生成嵌套列表(此方法比使用嵌套for
循环迭代更高效):
def listmaker(n, m):
# n = number of lists in the 3rd layer
# m = number of lists in the 2nd layer
return [[[]] * n] * m
listmaker(2, 2)
# [[[],[]],[[],[]]]
# you could use the "+" operator to create unequal numbers of lists in the 3rd layer
listmaker(2, 2) + listmaker(1, 1)
# [[[], []], [[], []], [[]]]
答案 1 :(得分:0)
如果您事先知道第三层列表的长度,有一种方法。
>>> length = [1,2,3,4] # indicates the lengths of the third layer lists
>>> res = [ [ [] for i in range(j) ] for j in length ]
>>> res
[[[]], [[], []], [[], [], []], [[], [], [], []]]