我可以在 map 中指定其他参数吗?
例如,我有以下代码:
def f(a, b):
return a + b
l = [1, 2, 3]
ll = map(f, l)
我怎样才能给map上面的参数一个参数,以便每个元素ll都是一个元素和给定参数的总和l?
例如,如果我可以使用类似的东西map(f(2,), l),我会得到[3, 4, 5]结果。
我知道我可以通过列表理解或 for 循环来获得相同的结果,但我只想知道是否有可能以某种map方式做到这一点。
我可以在 map 中指定其他参数吗?
例如,我有以下代码:
def f(a, b):
return a + b
l = [1, 2, 3]
ll = map(f, l)
我怎样才能给map上面的参数一个参数,以便每个元素ll都是一个元素和给定参数的总和l?
例如,如果我可以使用类似的东西map(f(2,), l),我会得到[3, 4, 5]结果。
我知道我可以通过列表理解或 for 循环来获得相同的结果,但我只想知道是否有可能以某种map方式做到这一点。
map本身并没有直接提供一种方法来做到这一点。但是,您可以通过使用functools.partial预先指定静态参数来做到这一点:
>>> def add(x, y):
... return x+y
>>> map(functools.partial(add, y=10), [1, 2, 3])
[11, 12, 13]
然而,正如@jamylak 在评论中建议的那样,没有理由这样做。如果您不想存储结果,只需执行常规 for 循环:
for item in [1, 2, 3]:
add(item, 10)
你不应该使用map()这个,而是列表理解:
new_lst = [f(x, other_value) for x in lst]
另一种选择是 lambda。但不要这样做:
new_lst = map(lambda x: map(x, other_value), lst)
你也可以考虑:-
def f(a):
return a + b
l = [1, 2, 3]
b = 2
ll = map(f,l)
print ll
这是你想要的:
listA=[1,2,3]
def f(a,b=2):
return a+b
result = map(f,listA)
print result
或者,如果您在两个列表中有相同数量的项目,您可以执行以下操作:
listA=[1,2,3]
listB=[2,2,2]
def f(a,b):
return a+b
result = map(f,listA,listB)
print result