替换None
为空列表:
map(func1, a or [], b or [], c or [], d or [])
或过滤列表:
map(func1, *filter(None, (a, b, c, d)))
该filter()
调用完全从列表中删除d
,而第一个选项为您None
的函数调用提供值。
我删除了 lambda,这里是多余的。
使用该or []
选项,第四个参数是None
:
>>> map(func1, a or [], b or [], c or [], d or [])
y: ('azerty', 'qsdfg', 'wxc', None)
y: ('uiop', 'hjklm', 'vbn', None)
[None, None]
过滤结果为 3 个参数func1
:
>>> map(func1, *filter(None, (a, b, c, d)))
y: ('azerty', 'qsdfg', 'wxc')
y: ('uiop', 'hjklm', 'vbn')
[None, None]
您也可以使用itertools.starmap()
,但这有点冗长:
>>> list(starmap(func1, zip(*filter(None, (a, b, c, d)))))
y: ('azerty', 'qsdfg', 'wxc')
y: ('uiop', 'hjklm', 'vbn')
[None, None]