我正在编写一个Python函数nest(a, b)
,它取值a
和数字b
。然后将值a
放在list
内,放在另一个列表中,依此类推,最多n个级别。
例如:
nest("foo", 3)
应该返回:
[[[["foo"]]]]
答案 0 :(得分:4)
你可以试试这个,
def nest(obj, depth):
ret = obj
for _ in range(depth):
ret = [ret]
return ret
答案 1 :(得分:2)
你可以写一个recursive function来达到这个目的:
def my_func(s, n):
return [s] if n == 0 else [my_func(s, n-1)]
示例运行
>>> my_func('foo', 3)
[[[['foo']]]]
注意: Python解释器堆栈允许的最大递归限制。此限制可防止无限递归导致C堆栈溢出并导致Python崩溃。
您可以使用sys.getrecursionlimit()
函数检查此值,该函数根据doc:
返回递归限制的当前值,即最大深度 Python解释器堆栈。此限制可防止无限递归 从导致C堆栈溢出和崩溃Python。有可能 由setrecursionlimit()设置。
答案 2 :(得分:1)
这是一个递归解决方案,它很自然地来自问题定义:
def nest(val, n):
if n <= 0:
return val
else:
return [ nest(val, n - 1) ]