我需要在一个函数中对对象(字符串,整数等)求和(不创建其他函数,它可以在一个函数内完成)。它应该以这种方式工作:当给定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
变量(如果有人会想到这一点)。也许我只是愚蠢而且看不出这是一件简单的事情,请原谅我,如果是这样的话。
谢谢你的每一个答案!
答案 0 :(得分:4)
常见的累积模式是:
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')}])