静かなる名辞

pythonとプログラミングのこと

2019/03/22:TechAcademyがteratailの質問・回答を盗用していた件
2019/03/26:TechAcademy盗用事件 公式発表と深まる疑念



【python】複数のlist(など)を対象にmapを使う

 組み込みのmapは実は複数のiterableを引数に取れるように定義されています。

追加の iterable 引数が渡されたなら、 function はその数だけの引数を取らなければならず、全てのイテラブルから並行して取られた要素に適用されます。複数のイテラブルが与えられたら、このイテレータはその中の最短のイテラブルが尽きた時点で止まります。

2. 組み込み関数 — Python 3.6.8 ドキュメント

 簡単な例を見てみます。

>>> 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]

www.haya-programming.com

 単に複数の引数を取る関数を使いたければ、mapの第三引数以降を使った方が簡単です。