Python 解压缩映射()参数的嵌套列表

Python 解压缩映射()参数的嵌套列表,python,list,arguments,map-function,argument-unpacking,Python,List,Arguments,Map Function,Argument Unpacking,我肯定有办法做到这一点,但我一直没能找到。假设我有: foo = [ [1, 2], [3, 4], [5, 6] ] def add(num1, num2): return num1 + num2 那么,我如何使用map(add,foo),使它在第一次迭代中通过num1=1,num2=2,也就是说,它在第二次迭代中通过add(1,2),然后通过add(3,4),等等 尝试map(add,foo)显然可以add([1,2],#nothing)进行第一次迭代

我肯定有办法做到这一点,但我一直没能找到。假设我有:

foo = [
    [1, 2],
    [3, 4],
    [5, 6]
]

def add(num1, num2):
    return num1 + num2
那么,我如何使用
map(add,foo)
,使它在第一次迭代中通过
num1=1
num2=2
,也就是说,它在第二次迭代中通过
add(1,2)
,然后通过
add(3,4)
,等等

  • 尝试
    map(add,foo)
    显然可以
    add([1,2],#nothing)
    进行第一次迭代
  • 尝试
    map(add,*foo)
    会在第一次迭代中
    add(1,3,5)
在第一次迭代中,我需要像
map(add,foo)
这样的东西来执行
add(1,2)

预期输出:
[3,7,11]
听起来您需要:

这将为您解压列表
foo
中的每个参数
[a,b]
,并将它们传递给函数
add
。与
itertools
模块中的所有工具一样,它返回一个迭代器,您可以使用
list
内置函数使用该迭代器

从文件中:

当参数参数已从单个iterable分组为元组(数据已“预压缩”)时,用于代替
map()
map()
starmap()
之间的区别与
函数(a,b)
函数(*c)
之间的区别相似

试试这个:

 foo = [
    [1, 2],
    [3, 4],
    [5, 6]]

def add(num1, num2):
        return num1 + num2

print(map(lambda x: add(x[0], x[1]), foo))

还有另一个答案是完全有效的方法(即使不如ajcr的答案可读),但出于某种原因,它被删除了。我将复制它,因为它可能对某些情况有用

>>> map(add, *zip(*foo))
[3, 7, 11]

再次阅读问题后,似乎我们都错了,因为OP想要
添加(1,2
),然后
添加(2,3)
。。。除非这是OP的一个错误,
[3,7,11]
确实是我的示例的预期结果:)哈哈,他们半清楚了,左边的它确实
添加(1,2)
,然后
添加(2,3)
但添加了预期值output@BinaryFunt:我想现在你已经澄清了预期的输出,这很清楚了-我编辑了最初引起怀疑的打字错误。@PadraicCunningham哦,我明白我的错误了。呜呜!ajcr现在已经纠正了它。您可以检查您的问题,因为答案和您所说的期望输出不一样。这可能比ajcr的回答稍快。我发现这非常有用,有助于将参数列表传递给tqdm的process_map函数。
>>> map(add, *zip(*foo))
[3, 7, 11]