あまり知られていませんが、組み込みのmapは実は複数のiterableを引数に取れるように定義されています。
追加の iterable 引数が渡されたなら、 function はその数だけの引数を取らなければならず、全てのイテラブルから並行して取られた要素に適用されます。複数のイテラブルが与えられたら、このイテレータはその中の最短のイテラブルが尽きた時点で止まります。
この機能を用いることで、複数の引数がある関数を対象にしてmapを使うことができます。
簡単な例を見てみます。
>>> list(map(lambda x,y: x+y, [1,2,3], [4,5,6])) [5, 7, 9]
numpyが使えないor使うまでもないときに、ちょっとした配列操作をやるのに良いかもしれません。あとは文字列の結合とかにもいいかもしれません。要するに、同じ長さのリストなどを処理したいというときは使えます。
なお、ドキュメントにもある通り、zipなどと同じく結果の長さは最短の引数に合わせられます。
>>> list(map(lambda x,y: x+y, [1,2,3], [4,5])) [5, 7]
また、itertools.startmapで同じことをやるとすると、こうなります。
>>> from itertools import starmap >>> list(starmap(lambda x,y: x+y, zip([1,2,3], [4,5,6]))) [5, 7, 9]
【python】mapで複数の引数を渡したいときはstarmapが便利 - 静かなる名辞
単に複数の引数を取る関数を使いたければ、starmapよりmapの第三引数以降を使った方が簡単です。