python - 使用带有 `map` 的多个参数的函数

标签 python python-3.x lambda typeerror

我正在尝试将一个带有 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/

相关文章:

python - 图 st 排序或耳朵分解的任何实现?

python-3.x - OpenCV 无法将 VideoCapture 与 url 一起使用

java - 使用 Java 8 流对集合进行分组和排序

python - 撤消禁用 pip 缓存

python-3.x - python3 - pandas 确定事件发生是否具有统计显着性

java - Java 8 Lambda 表达式编译成什么?

python - 查找文件中的最大值

python - 如何截取 tkinter 应用程序的屏幕截图?

python - 仅显示嵌套字典中的差异

python - 如何通过重新启动应用程序来克服ModbusTcpServer中的 "Address already in use"?