应用带有输入等列表的函数



我想从其他列表(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]

您可以使用map函数轻松执行此操作:

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

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

from itertools import starmap
starmap(mag, zip(a,b,c))

有关示例,请参阅此处。

另一种解决方案是使用maplambda

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

只使用内置函数怎么样?喜欢拉链

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

加上另一个python buit-in函数,map,它返回一个 迭代器,从而使事情运行得更快,最终节省内存:

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

相关内容

  • 没有找到相关文章

最新更新