我对python有一个简单的问题:
说我有A = [1,2,3,4]
,我想要对第二和第三个条目中的元素求和。我怎么能在python中这样做? sum(A[i] for i in [1:2]) = 2 + 3 = 6
不起作用。
答案 0 :(得分:3)
您的代码不起作用,因为[1:2]
在Python中不是一个合法的表达式:
[1:2]
^
SyntaxError: invalid syntax
sum(i for i in A[1:3])
会奏效。
sum(A[1:3])
中的列表切片
答案 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]]
而不是类型错误。