Python添加其他所有项目

时间:2015-03-23 10:49:00

标签: python

如果我有一个说[7,6,5,4,3,2,1]的列表,我怎么能让它每隔一个数字添加一次upp,例如7 + 5 + 3 + 1

我尝试添加mylist[0] + mylist[2]等,但这非常繁琐。

2 个答案:

答案 0 :(得分:8)

sum(mylist[::2])

mylist[::2]采用其他所有项目,sum对其进行求和。

如果你想拥有第一,第三,第五等项目,你可以使用:

sum(list[1::2])

这将首先省略第一个项目(1部分),然后执行与第一个命令相同的操作。

答案 1 :(得分:1)

如果您不想创建新列表,可以使用xrange添加每个偶数索引元素:

l = [7,6,5,4,3,2,1]

print(sum(l[i] for i in xrange(0, len(l), 2)))

或使用itertools.islice

sum(islice(l, 0, None, 2))

使用python2时,某些时间显示islice在时间和空间上获胜:

In [14]: timeit sum(islice(l, 0, None, 2))
10 loops, best of 3: 123 ms per loop

In [15]: timeit sum(l[i] for i in xrange(0,len(l), 2))
1 loops, best of 3: 363 ms per loop

In [16]: timeit sum(l[::2])
10 loops, best of 3: 148 ms per loop

他们都返回相同的结果:

In [21]: sum(islice(l, 0, None, 2))
Out[21]: 24999995000000

In [22]: sum(l[i] for i in xrange(0,len(l), 2))
Out[22]: 24999995000000

In [23]: sum(l[::2])
Out[23]: 24999995000000