[英]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.