有什么方法可以比遍历它更快地执行“索引 * 列表中的相应项目”?

问题描述 投票:0回答:1

我这里有这段代码:

a = [1,3,5,7,9,2,4,6,8]
for x in range(len(a)):
    total += (x+1)*a[x]

我想做的是让总计等于(数字索引+1)*(数字本身)遍历整个列表的总和。 所以

total = 1x1 + 2x3 + 3x5 + 4x7 + 5x9 + 6x2 + 7x4 + 8x6 + 9x8
total = 255

我所拥有的实现这一目标的方法显然“太慢”了……有没有更快的方法可以在不使用导入库的情况下实现相同的效果?

python python-3.x
1个回答
0
投票

sum()
一起使用
enumerate()
功能。

total = sum(i * item for i, item in enumerate(a, 1))

enumerate()
的第二个参数是
i
的第一个值,所以你不必加1.

然而,在我的测试中,这只比你的循环快 10%。但我不确定你能做得更好。

© www.soinside.com 2019 - 2024. All rights reserved.