1

给定一个列表

[1,2,3,4,5,6]

2n元素

我如何获得清单

[1+2,3+4,5+6]

n元素?

4

3 回答 3

2

itertools食谱部分

def grouper(n, iterable, fillvalue=None):
    "Collect data into fixed-length chunks or blocks"
    # grouper(3, 'ABCDEFG', 'x') --> ABC DEF Gxx
    args = [iter(iterable)] * n
    return izip_longest(fillvalue=fillvalue, *args)

然后调用:

for paired in grouper(2, inputlist):
    # paired is a tuple of two elements from the inputlist at a time.

grouper返回一个迭代器;如果您必须有一个列表,只需将可迭代对象消耗到一个新列表中:

newlist = list(grouper(2, inputlist))
于 2012-12-01T13:49:52.543 回答
2
a = [1,2,3,4,5,6]
b = [a[i]+a[i+1] for i in xrange(0,len(a),2)]
于 2012-12-01T13:51:42.840 回答
2
li = [1,2,10,20,100,200,2000,3000,2,2,3,3,5,5]
print li

it = iter(li)
if len(li)%2==0:
    print [x+it.next() for x in it]

[1, 2, 10, 20, 100, 200, 2000, 3000, 2, 2, 3, 3, 5, 5]
[3, 30, 300, 5000, 4, 6, 10]
于 2012-12-01T13:56:36.457 回答