【问题标题】:How to apply a function to a list with different aguments, from a different list? [duplicate]如何从不同的列表将函数应用于具有不同参数的列表? [复制]
【发布时间】:2018-03-12 22:46:34
【问题描述】:

我有一个参数列表/生成器,我需要将其放入函数中以将其应用到列表中。问题是我正在练习函数式编程,并且希望避免使用“for 循环”,除了在 liste 理解(或生成器、dicts 等)之外。

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

我已经很难解释了。

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

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

【问题讨论】:

  • 那么function 有两个参数?
  • 您在寻找[funct(x, y) for x, y in zip(args, elements)]吗?
  • 您能否再解释一下:“函数必须在每个 i 的元素 [i] 上使用 args[i] 运行”?它只是一个拉链吗??
  • 我认为 OP 只是在寻找 zip
  • 为什么不能使用map(func, args, elements)?或者[*map(func, args, elements)],如果你想在列表中输出。

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


【解决方案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)]

【讨论】:

    猜你喜欢
    • 2019-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-31
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多