在zip()的for循环中使用lambda

时间:2016-03-12 23:27:56

标签: python

大家好我今天和python一起玩了一下,并且在使用lambda fucntion时有些困惑。 我的初衷是减去矢量中每个元素的值,其中值形成第二个矢量,并将所有结果引入第3个矢量。就是这样:

v1=[1, 2, 3, 4]
v2 =[7,2 ,7 ,6]
v3=[x-y for x,y in zip(v1,v2)]

然后我使用lambda函数计算使用相同结构的绝对值,我尝试了这个:

v1=[1, 2, 3, 4]
v2 =[7,2 ,7 ,6]
[lambda x,y: x-y if x>y else y-x for x,y in zip(v1,v2)]

这只会给出我认为的记忆位置。我不知道为什么,我做错了吗?

1 个答案:

答案 0 :(得分:3)

它为您提供了大量lambda个功能。你在那里所做的只是定义函数,但你永远不会调用它。这样做:

[(lambda x,y: x-y if x>y else y-x)(x,y) for x,y in zip(v1,v2)]
但是,你真的不需要一个功能。就这样做:

[(x-y if x>y else y-x) for x,y in zip(v1,v2)]