在Python中映射一组项目时,是否可以投影内部函数的第二个参数?
当使用map使用int cast函数的monadic时,它的工作原理很简单:
list(map(int, ["4","3","1","2"]))
但是我想使用int的二元形式int(“1101”,2)使用map来将多个二进制数字转换为int:
list(map(int(,2), ["1101","0001","1100","0011"]))
答案 0 :(得分:7)
您需要lambda
list(map(lambda x : int(x,2), ["1101","0001","1100","0011"]))
但是当你需要list
,lambda
和map
时,这是一个你只需要 list comprehension 的死亡赠品:
[int(x,2) for x in ["1101","0001","1100","0011"]]
(需要map
时比lambda
更清晰,更短,更快)
答案 1 :(得分:5)
int
函数具有签名:
int(x, base=10)
因此,我们可以制作partial
,我们将base=2
分配给:
from functools import partial
list(map(partial(int, base=2), ["1101","0001","1100","0011"]))
partial
将第一个参数作为函数(此处为int
)以及其他(命名和未命名)参数。它构造了一个函数,它将自己填充一些参数。
答案 2 :(得分:4)
如果需要将参数传递给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
的理解。