一行代码实现对列表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]])

 

 

暂时就这些思路了,谁有更好的实现方法欢迎补充。

 

posted @ 2018-03-19 20:56  雪竺轩  阅读(817)  评论(0)    收藏  举报