有时我发现一个镜头理解列表真的很难理解,尤其是当它们往往变得很长时。几周后,你或其他人将很难理解你试图做什么。
但是,不确定您是否可以一次性完成,但也许您可以尝试使用该map
功能(将功能应用于列表的所有条款),然后使用filter
and正确过滤结果partial
。
说list1
是您的初始清单:
from functools import partial
from operator import is_not
def f1(x):
data = Apply_Filters(x[0])
if len(data.split()) > 1:
return tuple([x[1], data])
# so it will give you in one line
list(filter(partial(is_not, None), list(map(f1, list1)))
# in several steps
list2 = list(map(f1, list1)) # you apply f1 function to all elements of list1. Pb: you get a few None object in list2 (because you did not specify what to do if the `if` condition is not valid
list3 = list(filter(partial(is_not, None), list2)) # so, you remove the None elements from your list
如果您的目标真的是只用一行来动态定义列表,那么如果您f1
首先定义,这应该可以解决问题!