我正在尝试将一个带有 2 个参数的函数映射到一个列表:
my_func = lambda index, value: value.upper() if index % 2 else value.lower()
import string
alphabet = string.ascii_lowercase
n = map(my_func, enumerate(alphabet))
for element in n:
print(element)
这给了我一个 TypeError: <lambda>() missing 1 required positional argument: 'value'
.
将我的 lambda 映射到此输入的正确方法是什么?
最佳答案
map
会将 enumerate
中的每个值作为单个参数传递给回调,即 lambda
将以元组作为参数调用.如果 map
解包看起来不可解包的参数,那将是非常令人惊讶的行为,因为那时它的行为将取决于它迭代的值。
要扩展可迭代参数,请使用 starmap
相反,它在传递参数时“应用 *
(星号)”:
from itertools import starmap
n = starmap(lambda index, value: ..., enumerate(alphabet))
关于python - 使用带有 `map` 的多个参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50042242/