一行代码实现对列表a中的偶数位置的元素进行加3后求和?
一公司笔试题:一行代码实现对列表a中的偶数位置的元素进行加3后求和?网上查看应该是阿里某年的校招笔试题。
我当时用的reduce高阶函数,配合lambda函数才勉强写出一个,不过稍微不太满足题目意思
reduce() 函数如何使用见某鸟教程
reduce(lambda x, y: x+y, [x+3 for x in a[1::2])
我用列表的切片取出了偶数为元素组成一新列表,与题目意思不太吻合,题意是列表a中的偶数位置的元素进行加3后再求和,此方法将reduce( )第二个参数列表序列改用列表推导式
reduce(lambda x, y: x+y, [x+3 for x in a[1::2])
不过注意的是在Python3中reduce()函数并不能直接用了,需要先导入,但这违背了一行代码写出答案的原则,不过在Python2中可以直接使用
from functools import reduce
晚上又想到了内置的sum函数,用sum函数岂不是比高阶函数更简单
sum([x+3 for x in a[1::2]])
暂时就这些思路了,谁有更好的实现方法欢迎补充。

浙公网安备 33010602011771号