Python内置sum函数

时间:2016-11-09 12:25:04

标签: python

我对python有一个简单的问题:

说我有A = [1,2,3,4],我想要对第二和第三个条目中的元素求和。我怎么能在python中这样做? sum(A[i] for i in [1:2]) = 2 + 3 = 6不起作用。

5 个答案:

答案 0 :(得分:3)

您的代码不起作用,因为[1:2] 在Python中不是一个合法的表达式

    [1:2]
      ^
SyntaxError: invalid syntax

修复

sum(i for i in A[1:3]) 

会奏效。

更好的解决方案

sum(A[1:3])

阅读an informal introduction to python

中的列表切片

答案 1 :(得分:2)

该语法无效,您可以使用:

sum(A[i] for i in [1,2])

或:

sum(A[i] for i in range (1,3))

或使用切片:

sum(i for i in A[1:3])

不包括切片中的最后一个索引。

(或者如下面的评论所说,更简单的是:sum(A [1:3])

您的代码无效的原因是切片不能单独使用。必须要说的是它的一部分,例如, A [1:3]是A的一部分,但[1:3]没有说明它应该采取什么的元素。第二个问题是索引,就像我提到的,最后一个不包括在内。

答案 2 :(得分:1)

sum(A[1:3])
  

A [1:3]表示从索引1到3切片列表[3不包括]

了解列表切片。

祝福!

答案 3 :(得分:0)

您可以尝试这样的事情:

 sum([A[item] for item in [1,3] ])

我认为没有更简单的解决方案。

答案 4 :(得分:0)

如果您想要列表中的连续范围的项目,请使用切片:

sum(A[1:4])  # A[1] + A[2] + A[3]

如果索引集是连续的,请使用列表理解

indices=[1,5,7]
sum(A[i] for i in indices)

operator.itemgetter

from operator import itemgetter as ig
indices=[1,5,7]
sum(ig(*indices)(A))

-

或许遗憾的是list类型不能接受元组作为索引,将A[1,5,7]视为[A[1], A[5], A[7]]而不是类型错误。