如何将map函数同时应用于两个迭代?

时间:2014-09-19 21:22:14

标签: python

我希望map中的python函数同时应用于两个迭代。下面是我的代码,但它给了我错误                    t is not defined

x = [1, 2, 3, 4]
z = [5, 6, 7, 8]
y,m = map(lambda w,t: x*x,t*t, x,z)
print y

有没有办法用map两次迭代来实现结果?

PS - 我正在研究地图功能。我明白同样可以通过普通功能实现,但我想知道为什么以上不起作用?

感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

首先,修复lambda,它缺少括号,指的是错误的名称:

lambda w, t: (w * w, t * t)

其次,实际上来自map的输出,这些输出无法解压缩为两个名称:

[(1, 25), (4, 36), (9, 49), (16, 64)]

你想要zip他们吗? y, m = zip(*map(...))给出y == (1, 4, 9, 16)

除此之外,你还没有说过你想要达到的目标,这取决于你。但是,由于这两个列表根本不进行交互,因此单独map它们会更容易。

答案 1 :(得分:0)

map的调用实际上如下所示:将lambda方法应用于args wt并返回x * x,这些迭代适用于map方法为t * txz。 感觉您错过了lambda返回元组的括号,并且混合了wx。可能是:

print map(lambda w,t: (w * w, t * t), x, z)
>>> [(1, 25), (4, 36), (9, 49), (16, 64)]

您期望ym是什么? map返回一个可迭代而不是元组。看起来你正在寻找元组列表而不是单个元组