应用带有输入之类的列表的函数

时间:2018-10-11 00:56:45

标签: python map-function

我想从其他列表(a,b,c)创建一个新列表(V)并使用一个函数,但我想利用python的优势并将该函数应用于三个列表,而不是逐个元素地应用。

例如,我有列表a,b和c;应用该功能后的结果应为V。谢谢。

def mag(a, b, c):
    # something sophisticated
    return (a+b)*c

a = [1, 5, 7]
b = [4, 8, 3] 
c = [2, 6, 3]
V = [10, 78, 30]

4 个答案:

答案 0 :(得分:5)

您可以使用map函数轻松做到这一点:

V = list(map(mag, a, b, c))

答案 1 :(得分:3)

您要先压缩参数,然后将函数映射到解压缩的元组上:

from itertools import starmap

starmap(mag, zip(a,b,c))

有关示例,请参见here

答案 2 :(得分:1)

仅使用内置功能怎么办?像zip

>>> [mag(a_, b_, c_) for a_,b_,c_ in zip(a, b, c)]
[10, 78, 30]

加上另一个python内置函数map,该函数返回一个 迭代器,从而使处理速度更快并最终节省了内存:

>>> gen = map(lambda uple:mag(*uple), zip(a, b, c))
>>> list(gen)
[10, 78, 30]

答案 3 :(得分:1)

另一种解决方案是使用maplambda

In [16]: list(map(lambda p: mag(*p), zip(a, b, c)))
Out[16]: [10, 78, 30]