2014-03-05 61 views
1

我知道sum(list)的作品添加列表中的所有元素,但它不允許你選擇一個範圍。如何從列表中添加一系列整數元素? Python 3.3

例如:

l = [11, 22, 33, 44, 55, 66, 77]  
x = 4 

在這種情況下,我想添加l[0 : 4]在一起。

我知道我可以做:

short_l = l[0 : x] 
sum(short_l) 

但有一個功能,可以讓我選擇一個列表中的元素的範圍內加在一起?

+0

你想要的功能來選擇或內建函數來選擇範圍和補充的嗎? – thefourtheye

+0

要麼是真的... – Gronk

回答

1

如果你不希望創建一個子列表,你可以使用itertools.islice

>>> import itertools 
>>> l = [11, 22, 33, 44, 55, 66, 77] 
>>> sum(itertools.islice(l, 0, 4)) 
110 
+0

有什麼辦法比這更好:'sum(l [slice(0,4)])'? – Gronk

+1

@Gronk,'l [slice(0,4)]'返回一個子列表,而'itertools.islice(1,0,4)'返回一個迭代器。如果子列表很大,'itertools.islice'更具有內存效率。但是對於小的子列表來說,它並沒有太大的區別。 – falsetru

+0

@Gronk,'l [slice(0,4)]'是表達'l [0:4]'的另一種方式。 ('l [0:4] == l [slice(0,4)]') – falsetru

0

爲什麼你需要一個新的功能呢?只要做sum(l[0:x])。如果你真的想要一個功能,你可以自己定義一個:

def sum_range(lst, end, start=0): 
    return(sum(lst[start : end + 1])) 

從指數增加開始到結束,包括結束。如果未指定,則開始默認爲索引0。

1

您可以使用內置的slice函數來獲取項目的範圍,這樣

l, x = [11, 22, 33, 44, 55, 66, 77], 4 
print(sum(l[slice(0, 4)])) 
# 110 

slice的參數是一樣的slicing syntax

相關問題