我希望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 - 我正在研究地图功能。我明白同样可以通过普通功能实现,但我想知道为什么以上不起作用?
感谢您的帮助。
答案 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 w
和t
并返回x * x
,这些迭代适用于map
方法为t * t
,x
和z
。
感觉您错过了lambda
返回元组的括号,并且混合了w
和x
。可能是:
print map(lambda w,t: (w * w, t * t), x, z)
>>> [(1, 25), (4, 36), (9, 49), (16, 64)]
您期望y
和m
是什么? map
返回一个可迭代而不是元组。看起来你正在寻找元组列表而不是单个元组