如果要获得一个(元素为整数的)列表里面的偶数,很容易想到列表解析:
[i for i in nums if i%2==0]
但是如果要使列表的长度不变,让奇数用0来填充,可能你会直接写:
[i for i in nums if i%2==0 else 0]
那就错了,这是lambda函数的写法,拿到这边就有问题了。
但是有两种方法实现:
首先使用lambda来定义一个f,再将f作用在每个i上:
f = lambda x: x if x%2==0 else 0 [f(i) for i in nums]
另一种做法:
[ i%2==0 and i or 0 for i in nums]
相当于 if i%2==0 则 i 否者 0