python列表元素求和_对Python列表的前k个元素求和?

有两个选项,都使用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对象。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值