给定一些数字 n,我想生成一个大小为 n 的列表,其中以下示例显示列表中的第 n 个元素应该如何:
- 对于 n=0:返回
[]
- 对于 n=1:返回
[[]]
- 对于 n=2:返回
[[],[[]]]
- 对于 n=3:返回
[[], [[]], [[], [[]]]
基本上,它采用先前的列表并将它们附加到新列表中。
我尝试过以下方法:
def magic_list_helper(n, lst):
if n == 0:
return lst
if n == 1:
lst.append([])
return magic_list_helper(n-1,lst)
if n > 1:
magic_list_helper(n-1, lst)
new_list = []
new_list.append(lst[n - 2])
lst.append(new_list)
return lst
但对于 n=3 我得到[[], [[]], [[[]]]]
.
有几件事需要注意。首先,如何设置递归以产生所述输出。嗯,你的输出是这样的形式[f(0), f(1), f(2) ... f(n)]
对于递归函数f
。下面的代码正是这样做的:
def magic_list_helper(n):
return [] if n == 0 else [magic_list_helper(n-i) for i in range(1,n)]
If n=0
,它返回一个空列表,否则,它将返回[f(0), f(1), f(2) ... f(n)]
,然后这将返回[f(0), f(1), f(2) ... f(n-1)]
等等。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)