For learning purposes, I’m trying to make a function using Python that takes in another function and two arrays as parameters and calls the function parameter on each index of each array parameter. So this should call add on a1[0] & a2[0], a1[1] & a2[1], etc. But all I’m getting back is a generator object. What’s wrong?
def add(a,b):
yield a + b
def generator(add,a1,a2):
for i in range(len(a1)):
yield add(a1[i],a2[i])
g = generator(add,a1,a2)
print g.next()
I’ve also tried replacing what I have for yield above with
yield map(add,a1[i],a2[i])
But that works even less. I get this:
TypeError: argument 2 to map() must support iteration
Your definition of
add()is at least strange (I’m leaning twoards calling it “wrong”). You shouldreturnthe result, notyieldit:Now, your
generator()will work, thoughis an easier and faster way to do (almost) the same thing. (If you want an iterator rather than a list, use
itertools.imap()instead ofmap().)