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

标签 python list recursion

我正在尝试编写一个递归函数,它接受数字 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/

相关文章:

recursion - 为什么我的迭代高阶过程比等效的递归过程给出更精确的结果?

python - 更改 python 3.3.2 中的 shell 打印颜色

python - 在Python 3中设置执行位后运行Python程序

list - 使用 tail 定义长度函数

python - 使用列表元素进行正则表达式搜索以在大型文档中查找匹配项

r - 使用 shift() 进行递归在 data.table 中生成多列

python - 从 GeoPy 地理编码器返回单个地址组件(城市、州等)

Python - 生成父/子字典结构

Python - 如果元素尚未包含在列表中,如何追加到列表中?

powershell - 递归添加文件到文件夹,如果不存在则创建文件夹