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)
你需要 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)
该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)以及其他(命名和未命名)参数.它构造了一个函数,它将自己填充一些参数.