簡體   English   中英

遞歸python函數中的對象求和

[英]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 = '' ,然后returnreturn ,因為每次有遞歸調用時,它將被刪除。 我也不想要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) == yisinstance被認為是更好的樣式。

作業:擴展功能,使其也適用於以下參數:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM