Reputation: 1
Code is as follows:
def func(i,j):
return i+j
m = list(product(range(5),range(7)))
print(m)
x = map(func,m)
list(x)
Error :
[(0, 0), (0, 1), (0, 2), (0, 3), (0, 4), (0, 5), (0, 6), (1, 0), (1, 1), (1, 2), (1, 3), (1, 4), (1, 5), (1, 6), (2, 0), (2, 1), (2, 2), (2, 3), (2, 4), (2, 5), (2, 6), (3, 0), (3, 1), (3, 2), (3, 3), (3, 4), (3, 5), (3, 6), (4, 0), (4, 1), (4, 2), (4, 3), (4, 4), (4, 5), (4, 6)]
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-181-fdda131ed5e8> in <module>()
5 print(m)
6 x = map(func,m)
----> 7 list(x)
TypeError: func() missing 1 required positional argument: 'j'
How to pass each pair in m
through func
. I don't want any for loop.
Upvotes: 0
Views: 96
Reputation: 59681
You can use itertools.starmap
:
from itertools import product, starmap
def func(i,j):
return i+j
m = list(product(range(5),range(7)))
print(m)
x = starmap(func,m)
list(x)
Upvotes: 2