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]])