对列表中的,偶数位置的元素进行加2求和。

python,对列表l = [1, 2, 1, 4, 5, 9, 7, 10, 2]中的偶数位置的元素进行加2求和。

用一行代码实现,求大佬赐教,注意是偶数位置的元素。

用map也是可以的

 r = sum(list(map(lambda x:x+2,[1, 2, 1, 4, 5, 7, 7, 10, 2][1::2])))
 result = sum(li[0: :2]) + len(li[0: :2])*2

使用列表的切片,把偶数位置的切出来li[0: :2],先求和sum(li[0: :2]) ,因为每个偶数位置的元素都要先加2,所以在偶数列表里有一个元素就加2,所以使用len(li[0: :2])*2得到最后的答案26

result=rum([i+2 for i in l[1::2]])


例子:list = [1,2,3,4,5]
取出偶数下标: filter
filter(lambda x:x%2==0,range(len(list)))      ==>[0,2,4]
 取出对应下标值:map
map(lambda x:list[x],filter(lambda x:x%2==0,range(len(list))))        ==>[1,3,5]
对应值加3 : lamda
map(lambda x:x+3,map(lambda x:list[x],filter(lambda x:x%2==0,range(len(list)))))
将数组求和 reduce
reduce(lambda x,y:x+y,map(lambda x:x+3,map(lambda x:list[x],filter(lambda x:x%2==0,range(len(list))))))    ==>18

arr = [1, 2, 1, 4, 5, 9, 7, 10, 2]
r = sum(arr) - sum([item for item in arr[::2]])

图片说明

sum([y + 2 for x, y in enumerate(l) if x %2])

不好意思,看错题目了,之前的程序是偶数元素相加 [1, 2, 1, 4, 5, 9, 7, 10, 2]
2+4+9+10=25
每个元素再加2
也就是
2+2+4+2+9+2+10+2=33

 arr = [1, 2, 1, 4, 5, 9, 7, 10, 2]
r = sum([item + 2 for item in arr[-(len(arr) - 1):][::2]])

图片说明

result=sum([y + 2 for x, y in enumerate(l) if x %2])

图片说明

r = sum(x + 2 for x in [1, 2, 1, 4, 5, 9, 7, 10, 2][1::2]])