Python - 递归地将字符串放在列表中最多n个级别

时间:2017-10-15 22:05:33

标签: python list nested

我正在编写一个Python函数nest(a, b),它取值a和数字b。然后将值a放在list内,放在另一个列表中,依此类推,最多n个级别。

例如:

nest("foo", 3)

应该返回:

[[[["foo"]]]]

3 个答案:

答案 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) ]