[英]Summing objects in recursive python function
我需要對一個函數中的對象(字符串,整數等)求和( 不要創建其他函數,可以在一個函數中完成)。 它應該這樣工作:給定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 = ''
任何位置寫入result = ''
,然后return
其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
請注意,Python中isinstance
type(x) == y
, isinstance
被認為是更好的樣式。
作業:擴展功能,使其也適用於以下參數:
print my_sum([[['s'],'ta'],('c',('k')), {('over'), ('flow')}])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.