Can I use index information inside the map function?
Use the enumerate()
function to add indices:
map(function, enumerate(a))
Your function will be passed a tuple, with (index, value)
. In Python 2, you can specify that Python unpack the tuple for you in the function signature:
map(lambda (i, el): i * el, enumerate(a))
Note the (i, el)
tuple in the lambda argument specification. You can do the same in a def
statement:
def mapfunction((i, el)):
return i * el
map(mapfunction, enumerate(a))
To make way for other function signature features such as annotations, tuple unpacking in function arguments has been removed from Python 3.
Demo:
>>> a = [1, 3, 5, 6, 8]
>>> def mapfunction((i, el)):
... return i * el
...
>>> map(lambda (i, el): i * el, enumerate(a))
[0, 3, 10, 18, 32]
>>> map(mapfunction, enumerate(a))
[0, 3, 10, 18, 32]
You can use enumerate()
:
a = [1, 3, 5, 6, 8]
answer = map(lambda (idx, value): idx*value, enumerate(a))
print(answer)
Output
[0, 3, 10, 18, 32]