在递归 python 函数中求和对象

Summing objects in recursive python function

我需要在一个函数中对对象(字符串、整数等)求和(不要创建其他函数,它可以在一个函数中完成)。它应该这样工作:当给定 my_sum([[['s'],'ta'],['c',['k']]]) 时,它应该 return '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)

它当然没有做它应该做的事,我只是在玩弄它试图想出点什么。上面的代码 return 是这样的:

s
ta
c
k

我想我离结果不远,因为我有我需要的东西,但问题是我如何总结这些项目?我不能在函数的任何地方写 result = '' 然后 return 它,因为每次递归调用时它都会被删除。另外我不想要 global 变量(如果有人会想到的话)。可能是我太笨了,看不出这是一件简单的事情,请见谅。

感谢您的每一个回答!

常见的累积模式是:

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 中不受欢迎,isinstance 被认为是更好的风格。

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

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