我这里有这段代码:
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
我所拥有的实现这一目标的方法显然“太慢”了……有没有更快的方法可以在不使用导入库的情况下实现相同的效果?
与
sum()
一起使用enumerate()
功能。
total = sum(i * item for i, item in enumerate(a, 1))
enumerate()
的第二个参数是i
的第一个值,所以你不必加1.
然而,在我的测试中,这只比你的循环快 10%。但我不确定你能做得更好。