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]