带条件求和的Python代码

标签 python list sum conditional-statements slice

任务如下:对索引为偶数的列表元素求和,并将结果乘以最后一个列表的元素。 我在 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/

相关文章:

list - 循环遍历列表,删除最后一个元素并将剩余列表添加到另一个列表

php - 如何获取数组中某些数组的值之和?

具有多个where条件的MySQL连接查询

python - 为什么通过切片分配到列表末尾之后不会引发 IndexError?

python - 使用列表理解从元组列表创建矩阵

python - PyMongo 与 Django 和 uwsgi

mysql 总和,带行 ID

python - 生成 UDP 数据包的最快方法

python - 如何在 Python 3 中对列表进行分块?

python - 根据形状对 numpy 数组列表进行分组。 Pandas ?