应用map函数时在python中投影变量

2 python dictionary functional-programming

在映射Python中的一组项目时,是否可以投影内部函数的第二个参数?

当使用map使用int cast函数的monadic时,它的工作原理很简单:

list(map(int, ["4","3","1","2"]))
Run Code Online (Sandbox Code Playgroud)

但我想使用int使用int的二元形式int("1101",2)将多个二进制数字转换为int:

list(map(int(,2), ["1101","0001","1100","0011"]))
Run Code Online (Sandbox Code Playgroud)

Jea*_*bre 7

你需要 lambda

list(map(lambda x : int(x,2), ["1101","0001","1100","0011"]))
Run Code Online (Sandbox Code Playgroud)

但是当你需要list,lambda并且map,这是一个大破绽,你只需要列表理解:

[int(x,2) for x in ["1101","0001","1100","0011"]]
Run Code Online (Sandbox Code Playgroud)

(比需要map时更清晰,更短,更快lambda)

  • 啊,好主意提到了list comps.在这种情况下,这确实是更好,更pythonic的方式.+1 (2认同)

Wil*_*sem 5

该int功能有签名:

int(x, base=10)
Run Code Online (Sandbox Code Playgroud)

所以我们可以制作一个partial,我们分配base=2给:

from functools import partial

list(map(partial(int, base=2), ["1101","0001","1100","0011"]))
Run Code Online (Sandbox Code Playgroud)

partial将第一个参数作为函数(此处int)以及其他(命名和未命名)参数.它构造了一个函数,它将自己填充一些参数.

  • 啊,这也是一个好主意.我忘记了`functools.partial`.+1 (2认同)