首页 > 解决方案 > 如何将列表中的所有整数乘以它们的索引相加?

问题描述

目标是返回列表中所有项目的总和,其中每个项目乘以其索引。

我的代码适用于一些测试用例;但是,它不适用于其他人。为什么不?

def index_multiplier(lst):
    total = 0
    if len(lst) >= 1:
        for num in lst:
            x = num*(lst.index(num))
            total += x
        return total
    else:
        return 0

第一个不起作用的测试用例:Test.assert_equals(index_multiplier([4, 4, 2, 2, -4]), -2)

我的代码返回 -8

标签: pythonlistindexingsuminteger

解决方案


为什么不只是一个简单的列表理解?

x = [4, 4, 2, 2, -4]
out = sum([i*y for i,y in enumerate(x)])

输出:

-2

编辑 - 可以不带方括号使用:

out = sum(i*y for i,y in enumerate(x))

推荐阅读