No, Python has BOTH generators and coroutines. Lua has only coroutines.
You're thinking of them as alternatives, whereas Python has a superset of what Lua has.
Builtin map() is for generators only. You can write map for coroutines as well:
def mapcoro(func, target):
while True:
value = (yield)
target.send(func(value))
(untested, I think you need to catch StopIteration around the yield line)
You can do everything with Python coroutines that you can do with Lua coroutines. You could say that Python doesn't need generators, but that's a different argument. I agree it is confusing... I was confused for a long time.