簡體   English   中英

Python內置的sum函數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM