「分からないです。」という質問だったのでエラーが出る仕組みを説明してみました。
[[(x,y) for y in [12,34]] for x in [34,78]]
はどんな配列なのか
こうなります。
python
1>>> [[(x,y) for y in [12,34]] for x in [34,78]]
2[[(34, 12), (34, 34)], [(78, 12), (78, 34)]]
3
map(lambda x,y:x+y,[[(x,y) for y in [12,34]] for x in [34,78]])
はどう作用するのか
map
は第二引数以降から1つずつ取り出して第一引数の関数で処理を行います。今回は第二引数までしかないので、取り出される値は1つだけです。なので、引数を2つ取る関数に1つの引数を渡したことになり、
python
1>>> f = lambda x,y:x+y
2>>> f([(34, 12), (34, 34)])
3Traceback (most recent call last):
4 File "<stdin>", line 1, in <module>
5TypeError: <lambda>() missing 1 required positional argument: 'y'
このようなエラーになります。
お分かりいただけましたか?