>>> L=range(6)
>>> from operator import add
>>> map(add, L[::2], L[1::2])
[1, 5, 9]
alternativ könnte man hier einen Iterator verwenden
>>> L_iter = iter(L)
>>> map(add, L_iter, L_iter)
[1, 5, 9]
da Sie denselben Iterator zweimal übergeben, map()
verbraucht bei jeder Iteration zwei Elemente
Eine andere Möglichkeit, den Iterator zweimal zu übergeben, besteht darin, eine Liste mit einer gemeinsamen Referenz zu erstellen. Das vermeidet die temporäre Variable
>>> map(add, *[iter(L)]*2)
[1, 5, 9]
Natürlich können Sie die add
mit Ihrer eigenen Funktion
>>> def myfunc(a,b):
... print "myfunc called with", a, b
... return a+b
...
>>> map(myfunc, *[iter(L)]*2)
myfunc called with 0 1
myfunc called with 2 3
myfunc called with 4 5
[1, 5, 9]
Und es ist einfach, auf 3 oder mehr Variablen zu erweitern
>>> def myfunc(*args):
... print "myfunc called with", args
... return sum(args)
...
>>> map(myfunc, *[iter(L)]*3)
myfunc called with (0, 1, 2)
myfunc called with (3, 4, 5)
[3, 12]