我确信有办法做到这一点,但我找不到它.说我有:
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]
听起来你需要starmap
:
>>> import itertools >>> list(itertools.starmap(add, foo)) [3, 7, 11]
这会[a, b]
从列表中解析每个参数foo
,并将它们传递给函数add
.与itertools
模块中的所有工具一样,它返回一个迭代器,您可以使用list
内置函数来使用该迭代器.
从文件:
使用而不是
map()
在参数参数已经从单个可迭代的元组中分组时(数据已经"预先压缩").之间的差异map()
和starmap()
相似之处之间的区别function(a,b)
和function(*c)
.