有没有更优雅的方式来编写这个函数?
它取偶数和奇数索引的平均值,如果列表元素数量为奇数,则保留最后一个元素。
def reduce(li):
result=[0 for i in xrange((len(li)/2)+(len(li)%2))]
for i,e in enumerate(li):
result[int(i/2)] += e
for i in range(len(result)):
result[i] /= 2
if (len(li)%2 == 1):
result[len(result)-1] *= 2
return result
这里,它的作用是:
a = [0,2,10,12]
b = [0,2,10,12,20]
reduce(a)
>>> [1,11]
reduce(b)
>>> [1,11,20]
它取偶数和奇数索引的平均值,如果列表元素数量为奇数,则保留最后一个元素。