在python中的一组项目映射时,是否可以投射内部函数的第二个参数?
使用MONADIC使用Int铸件功能时,它可以简单地工作:
list(map(int, ["4","3","1","2"]))
,但我想使用映射:
使用int的二元形式int(" 1101",2)将多个二进制数字施加到int上。list(map(int(,2), ["1101","0001","1100","0011"]))
您需要lambda
list(map(lambda x : int(x,2), ["1101","0001","1100","0011"]))
但是,当您需要list
,lambda
和map
时,这是您只需要 list Gracemension 的死赠品:
[int(x,2) for x in ["1101","0001","1100","0011"]]
(需要lambda
时,更清晰,更短,比map
更快)
int
函数具有签名:
int(x, base=10)
这样我们就可以制作一个partial
,在其中分配base=2
为:
from functools import partial
list(map(partial(int, base=2), ["1101","0001","1100","0011"]))
partial
作为第一个参数作为函数(此处 int
)以及其他(命名和未命名)参数。它构建了一个可以填充某些参数本身的函数。
如果您需要将参数传递给int
,则需要将其包装在功能中。您可以使用普通功能:
def func(i):
return int(i, 2)
或者您可以使用lambda
功能定义:
lambda i: int(i, 2)
您的代码将是:
list(map(lambda i: int(i, 2), ["1101","0001","1100","0011"]))
但是,正如@Jean所说,一旦到达这一点,您应该认真考虑使用map
和lambda
的理解。