簡體   English   中英

將列表理解用於遞歸函數

[英]Using List comprehension for recursive function

我已經可以在沒有列表理解的情況下使用此功能,但是,我想知道如何使用以下功能:

def flatten(L): 
    a_list = [] 

    for i in L: 
        if isinstance(i, list): 
            gl = flatten(i) 
            for n in gl: 
                a_list.append(n)

        else: 
            a_list.append(i) 

    return a_list 

    #  This is how I've attempted to use list comprehension, but I get a Syntax
    #  error and I'm not sure why.

    return [n for n in flatten(i) if isinstance(i, list) else i for i in L] 

語法錯誤可以修復,優先級錯誤,需要括號:

return [(n for n in flatten(i)) if isinstance(i, list) else i for i in L]

不幸的是,這不會做您想做的事,並且不可能用一個列表理解來做。

列表推導為每個輸入生成一個結果(就像map操作一樣),因此您不能生成比原始列表大的列表,這對於扁平化是必需的。

在此處尋找替代解決方案: 拼合(不規則的)列表列表

暫無
暫無

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

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