None
空のリストに置き換えます:
map(func1, a or [], b or [], c or [], d or [])
またはリストをフィルタリングします。
map(func1, *filter(None, (a, b, c, d)))
filter()
呼び出しはリストから完全に削除さd
れますが、最初のオプションはNone
関数呼び出しに値を与えます。
ラムダを削除しました。ここでは冗長です。
or []
オプションを指定すると、第 4 引数は次のように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]