总结Python列表的第一个k元素?

时间:2013-05-30 15:11:55

标签: python list sum

如何对给定列表中的第一个 k 项求和?

例如:

myList = [1,2,5]

如何使用 k k = 1返回1,为 k = 2返回3,为 k <返回8 < / em> = 3?

1 个答案:

答案 0 :(得分:6)

您有两个选项,均使用sum()

  • 使用itertools.islice()有效地提取这些元素:

    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

即使对于大kislice()版本与切片在同一个球场内,但我们不必首先使用k引用创建另一个列表对象。