如何将函数应用于具有不同aguments的列表,从不同的列表?

时间:2017-10-01 18:55:03

标签: python python-3.x list lambda functional-programming

我有一个参数列表/生成器,我需要将其放入函数中以将其应用于列表中。问题在于我正在练习函数式编程,并希望避免使用'for loops',除了内部的听觉理解(或生成器,dicts等)。

我有一个参数列表,每个参数对应一个不同列表中的唯一元素,我有一个函数来处理这些参数,我希望它返回一个列表。

我已经无法解释它了。

args = [a,b,c,...]
function = funct()
elements [cc,vv,dg,...] 

函数必须在每个i的元素[i]上使用args [i]运行(两个列表具有相同数量的元素)但我不需要组合,只需要一对一的关系。

1 个答案:

答案 0 :(得分:1)

使用zip

您可以使用zip()做您想做的事。来自documentation

  

返回元组的迭代器,其中第i个元组包含来自每个参数序列或迭代的第i个元素。

举个例子:

>>> a = [1, 2, 3, 4]
>>> b = [2, 4, 6, 8]
>>> list(zip(a,b))
[(1, 2), (2, 4), (3, 6), (4, 8)]

zip()返回iterator时,您可以迭代元组,而无需像示例中那样调用list()。这可以在list-comprehension中完成,我们将每个tuple解压缩到变量ab中,然后将它们逐个传递到函数funct()中:

[funct(a, b) for a, b in zip(args, elements)]