任务如下:对索引为偶数的列表元素求和,并将结果乘以最后一个列表的元素。 我在 Python 中有这个 oneliner 解决方案代码。
array = [-37,-36,-19,-99,29,20,3,-7,-64,84,36,62,26,-76,55,-24,84,49,-65,41]
print sum(i for i in array if array.index(i) % 2 == 0)*array[-1] if array != [] else 0
我的结果是-1476(计算是:41*(-37-19+29+3-64+36+26+55+84-65))
正确的结果是 1968。
我不明白为什么这段代码在这种特殊情况下不能正常工作。
最佳答案
这就是你要找的:
array[-1] * sum(array[::2])
array[::2]
从第一个索引到最后一个索引遍历数组,步长为两个,即,每个交替数字。 sum(array[::2])
从原始列表中获取备用数字的总和。
只有当您确定列表没有重复时,使用 index
才会按预期工作,这就是您的代码无法给出正确结果的原因。
关于带条件求和的Python代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22895791/