繁体   English   中英

Python-将字符串递归地放入列表中,最多可达n级

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM