gpt4 book ai didi

python - 如何仅给定长度递归地构建列表?

转载 作者:太空宇宙 更新时间:2023-11-04 01:48:30 26 4
gpt4 key购买 nike

我正在尝试编写一个递归函数,它接受一个数字 n 和一些值,比方说 'a',并递归地构建一个由 n 组成的列表 'a'

因此,func(4, 'a') 返回 ['a','a','a','a']

到目前为止,我的互联网搜索出奇地徒劳无功。我发现的大多数列表递归示例都采用附加参数。

我尝试了以下代码的各种版本:

def func(n, a):
if n == 1:
return [a]
else:
return func(n-1, a).append(a)

我在最后一次返回时不断收到 cannot append to NoneType 错误。所以 func(n-1,a) 返回 None

最佳答案

list.append 只返回 None 因为它的目的是就地更新目标列表。不要附加,只需添加:

def func(n, a):
if n == 1:
return [a]
else:
return func(n-1, a) + [a]

print(func(4, 'a'))

输出:

['a', 'a', 'a', 'a']

此外,您可能需要考虑使用生成器来提供更清晰(更短)的结果:

def func(n, a):
if n:
yield a
yield from func(n-1, a)

print(list(func(4, 'a')))

输出:

['a', 'a', 'a', 'a']

关于python - 如何仅给定长度递归地构建列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58584281/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com