I\'m trying to map a function that takes 2 arguments to a list:
my_func = lambda index, value: value.upper() if index % 2 else value.lower()
import string
a
map will pass each value from enumerate as a single parameter to the callback, i.e. the lambda will be called with a tuple as argument. It would be pretty surprising behaviour if map would unpack arguments which look unpackable, since then its behaviour would depend on the values it iterates over.
To expand iterable arguments, use starmap instead, which "applies a * (star)" when passing arguments:
from itertools import starmap
n = starmap(lambda index, value: ..., enumerate(alphabet))