应用map函数

时间:2017-08-31 11:22:14

标签: python dictionary functional-programming

在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"]))

3 个答案:

答案 0 :(得分:7)

您需要lambda

list(map(lambda x : int(x,2), ["1101","0001","1100","0011"]))

但是当你需要listlambdamap时,这是一个你只需要 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所说,一旦达到这一点,你应该认真考虑使用对maplambda的理解。