有没有办法在一个 Python 映射函数中调用多个函数?

Is there a way to call multiple functions inside one Python map function?

我目前正在进行的项目需要我将 RGB 元组转换为单数二进制字符串。

我目前正在使用 output.append(''.join(map('{:0>8}'.format, map(str, map("{0:b}".format, each))))) 首先将每个元组元素转换为二进制,然后转换为字符串,最后在加入之前用零填充,因此仍然可以区分每个 RGB 元素。它工作得很好,但我想知道是否有办法只使用 一个 map() 而不是三个?

查看 map 方法的文档。你会看到它需要一个 function 和一个 iterable。您不受限于特定方法或定义方法的方式,因此它可以是 lambda 或对内置或自定义方法的引用。所以你可以简单地定义一个函数来调用你想要的任何方法,并将它作为参数传递。

def func(value):
    print(f"=== {value} ===")
    print("something else...")
    # any other function called you'd like

for i in map(func, [0, 1 , 2]):
    i

你应该看到下面的输出:

=== 0 ===
something else...
=== 1 ===
something else...
=== 2 ===
something else...

不要使用 map,更喜欢列表理解或生成器。

output.append(''.join('{:0>8}'.format("{0:b}".format(item)) for item in each))

这看起来太复杂了。而不是

  • 将数字格式化为二进制字符串
  • 然后用零填充这个字符串
  • 然后不必要地将此字符串再次转换为字符串

只需使用 {:08b} 一次性将数字格式化为零填充的 8 位二进制字符串。

您不需要(也不能)将多个函数传递给 map

''.join(map('{:08b}'.format, each))