有两个选项,都使用sum():使用^{}可以有效地提取这些元素:from itertools import islice

sum(islice(somelist, k))

将列表切片,以便只包含以下第一个元素:sum(somelist[:k])

islice()内存效率更高,可以与切片竞争:>>> import timeit

>>> somelist = list(range(10000))
>>> k = 1
>>> timeit.timeit('sum(somelist[:k])', 'from __main__ import somelist, k')
0.23189388398895971
>>> timeit.timeit('sum(islice(somelist, k))', 'from __main__ import somelist, k; from itertools import islice')
0.2557754369918257
>>> k = len(somelist) // 2
>>> timeit.timeit('sum(somelist[:k])', 'from __main__ import somelist, k')
51.454719836998265
>>> timeit.timeit('sum(islice(somelist, k))', 'from __main__ import somelist, k; from itertools import islice')
53.374267254024744

即使对于一个大的k,这个islice()版本与切片是一样的,但是我们不必首先创建另一个带有k引用的list对象。在