鉴于一些功能,可以返回None或其他值和值的列表:Python列表理解与函数的输出和条件
def fn(x):
if x == 4:
return None
else return x
lst = [1, 2, 3, 4, 5, 6, 7]
我希望有fn()
输出列表不返回无
我有一些代码,作品看上去像这样:
output = []
for i in lst:
result = fn(i)
if result:
output.append(result)
我CA ñ表达这种列表理解像这样:
output = [fn(i) for i in lst if fn(i)]
但它运行fn(i)
对于任何不返回None
两次这是不可取的,如果fn
是一个昂贵的功能。
有没有什么办法可以在没有两次运行的情况下拥有漂亮的pythonic理解?
一个可能的解决方案:
output = [fn(i) for i in lst]
output = [o for o in f if o]
你知道什么是Python的?你的for循环。 –