创建不进行切片的嵌套递归列表

Mad*_*Bit 6 python recursion list

我需要编写一个接收非负整数并返回的函数:

[] for n=0 

[[]] for n=1 

[[],[[]]] for n=2

[[],[[]],[[],[[]]]] for n=3
Run Code Online (Sandbox Code Playgroud)

等等。对于n,我们将收到一个n调整大小的列表,因此索引中将i包含i-1列表中的所有元素。我不知道如何更好地解释这一点,英语不是我的母语。

我不允许使用列表切片或循环,并且我应该在没有copy模块的情况下创建每个列表的深层副本。我不允许让两个不同的列表或索引指向内存中的同一个列表。

这是我尝试过的:

def list_seq(x, outer_list=[]):
    if x == 0:
        return []
    outer_list.append(list_seq(x-1,outer_list))
    return outer_list
Run Code Online (Sandbox Code Playgroud)

的输出print(list_seq(2))[[], [...]].

Cyt*_*rak 4

如果不能使用循环,可以使用以下方法:

def recursive_list(n):
    if n == 0:
        return []
    else:
        return recursive_list(n-1) +  [recursive_list(n-1)]
Run Code Online (Sandbox Code Playgroud)

编辑

如果您想使用,可以执行以下操作append

def recursive_list(n: int) -> list:
    if n:
        result = recursive_list(n-1)
        result.append(recursive_list(n-1))
        return result
    return []
Run Code Online (Sandbox Code Playgroud)

注意,正如评论中指出的,caching引入了一些参考问题,因此我删除了缓存版本。