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