[英]Python - Put string inside a list recursively up to n levels
我正在努力编写一个Python函数nest(a, b)
,该函数需要一个值a
和一个数字b
。 然后将值a
放入list
,再将其放入另一个列表中,依此类推,直到n级。
例如:
nest("foo", 3)
应该返回:
[[[["foo"]]]]
你可以试试看
def nest(obj, depth):
ret = obj
for _ in range(depth):
ret = [ret]
return ret
您可以编写一个递归函数来实现此目的:
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()
函数检查此值:
返回递归限制的当前值,即Python解释器堆栈的最大深度。 此限制可防止无限递归导致C堆栈溢出和Python崩溃。 可以通过setrecursionlimit()进行设置。
这是一个递归解决方案,它很自然地来自于问题定义:
def nest(val, n):
if n <= 0:
return val
else:
return [ nest(val, n - 1) ]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.