[英]Python built in sum function
我對python有一個簡單的問題:
說我有A = [1,2,3,4]
,我想對第二和第三項中的元素求和。 如何在python中做到這一點? sum(A[i] for i in [1:2]) = 2 + 3 = 6
不起作用。
您的代碼無效,因為[1:2]
在Python中本身不是合法的表達式 :
[1:2]
^
SyntaxError: invalid syntax
sum(i for i in A[1:3])
將工作。
sum(A[1:3])
在python的非正式介紹中閱讀列表切片
那是無效的語法,您可以使用:
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]並沒有說明應采取的要素。 第二個問題是索引,就像我提到的那樣,不包括最后一個。
sum(A[1:3])
A [1:3]表示從索引1到3的切片列表[3不包括在內]
了解有關列表切片的信息。
最好的祝願 !
您可以嘗試如下操作:
sum([A[item] for item in [1,3] ])
我認為沒有比這更簡單的解決方案了。
如果要從列表中獲得連續范圍的項目,請使用切片:
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))
-
A[1,5,7]
是, list
類型無法接受元組作為索引,將A[1,5,7]
視為[A[1], A[5], A[7]]
而不是類型錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.