递归python函数中的求和对象

2024-04-30 01:27:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在一个函数中求对象(字符串、整数等)的和(不要创建其他函数,可以在一个函数中完成)。它应该这样工作:当给定my_sum([[['s'],'ta'],['c',['k']]])时,它应该返回'stack'。你知道吗

我想到了这个:

def my_sum(array):

    if not array: #empty array
        return None

    else:

        for item in array:

            if type(item) == list:
                my_sum(item)

            else:
                print(item)

它当然没有做它应该做的,我只是在玩弄它,试图想出一些东西。上面的代码返回:

s
ta
c
k

我想我离结果不远,因为我有我所需要的,但问题是我如何总结这些项目?我不能在函数的任何地方写result = '',然后return它,因为每次有递归调用时它都会被删除。我也不想要global变量(如果有人会想到的话)。也许我只是愚蠢,看不出这是一件简单的事情,如果是这样请原谅。你知道吗

谢谢你的回答!你知道吗


Tags: 对象函数字符串returnifstackmydef
1条回答
网友
1楼 · 发布于 2024-04-30 01:27:39

常见的累积模式是:

result = <init value>
for item in argument:
     result = result <operator> item
return result

(这可以写得更简洁,但这不是现在的重点)。你知道吗

适用于您的问题:

def my_sum(items):
    result = ''
    for item in items:
        if type(item) == list:
            result += my_sum(item)
        else:
            result += item
    return result

请注意,type(x) == y在Python中不受欢迎,^{}被认为是更好的样式。你知道吗

家庭作业:扩展函数,使其也适用于以下参数:

print my_sum([[['s'],'ta'],('c',('k')), {('over'), ('flow')}])

相关问题 更多 >