首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的python函数返回多个括号?

为什么我的python函数返回多个括号?
EN

Stack Overflow用户
提问于 2011-11-16 02:49:34
回答 3查看 688关注 0票数 0

我在某种程度上是python的新手,但我正在尝试创建一个递归函数,它的工作方式就像内置的range函数:

代码语言:javascript
运行
复制
def Range (lo, hi):
    if lo >= hi:
        return []
    else:
        return [lo, Range (lo+1,hi)]

但它返回多个列表。

它返回的是[3,[4,[5,[6,[]]]]],而不是我想要的[3,4,5,6]。这是为什么?我该如何修复它?

EN

回答 3

Stack Overflow用户

发布于 2011-11-16 02:54:17

您的Range函数返回一个列表,因此在您的最后一行中,您将返回一个列表中的列表。您可能应该做的是维护一个累加器,并向其添加值:

代码语言:javascript
运行
复制
def Range(lo, hi, acc=None):
    if acc is None:
        acc = []
    if lo >= hi:
        return acc
    else:
        acc.append(lo)
        return Range(lo+1, hi, acc)
票数 3
EN

Stack Overflow用户

发布于 2011-11-16 02:54:15

代码语言:javascript
运行
复制
def Range (lo, hi):
    if lo >= hi:
        return []
    else:
        return [lo] + Range (lo+1, hi)

但你可能会得到StackOverflow

票数 1
EN

Stack Overflow用户

发布于 2011-11-16 02:55:56

每次递归到Range都会返回一个列表,该列表是前一次递归的列表中的第二个元素。当然是Python has a built-in function for this,但是如果您想自己构建它,您可能只想以

代码语言:javascript
运行
复制
return [lo] + Range(lo+1, hi)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8141482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档