我已经让这个功能在没有列表理解的情况下工作了,但是,我想知道如何用一个来做:
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]
答案 0 :(得分:2)
语法错误可以修复,你的优先级错误,你需要括号:
return [(n for n in flatten(i)) if isinstance(i, list) else i for i in L]
不幸的是,这不会做你想做的事情,而且一个列表理解是不可能的。
列表推导生成一个结果每输入(就像map
操作),因此您无法生成大于原始列表的列表,这是展平所必需的。
在此处寻找替代解决方案:Flatten (an irregular) list of lists