我编写了一个函数,它创建了一个任意深度的空嵌套列表。它有一个外部函数和一个内部函数,但我不太确定是否真的需要使用内部函数。有没有内部函数重构或重写它的方法?或者甚至可以使用for循环?
def nested_list(depth):
def inner(my_list):
if len(my_list) == 1: return[my_list[0]]
return [inner(my_list[1:])]
return inner([[] for x in range(depth)])
谢谢,
答案 0 :(得分:4)
如果你想获得最短的代码,递归可以使它更短。
def nested_list(depth):
return [nested_list(depth - 1)] if depth else []
不需要循环或递归的更酷的方法是使用reduce()
函数:
def nested_list(depth):
reduce(lambda l, n: [l], xrange(depth), [])
对于Python 3:
import functools
def nested_list(depth):
functools.reduce(lambda l, n: [l], range(depth), [])
答案 1 :(得分:2)
如果您想要循环,可以使用:
def nested_list(depth):
x=[]
if depth==0:
return x
for i in range(depth):
x=[x]
return x