If the list is not too long, Paul Draper's answer is simple. If it is really long, you probably want to consider one of the other two options.
First, by using iterators, you can avoid copying around giant temporary lists:
avgs = [(a + b) / 2 for a, b in zip(*[iter(data)]*2)]
, , (, - a, b ), .
iter(data) .[iter(data)]*2 , , , .zip , . ( Python 2.x, 3.x, zip , itertools.izip, zip.)
, -, , , , .
, itertools grouper, ( more-itertools), grouper(data, 2) zip(*[iter(data)]*2), , , , . , . a > .
NumPy :
data_array = np.array(data)
:
avg_array = (data_array[::2] + data_array[1::2]) / 2
( ), 10 1/4 .
...
:
[sum(group) / size for group in zip(*[iter(data)]*size)]
NumPy . - data[::size], data[1::size],..., data[size-1::size], :
sum(data[x::size] for x in range(size)) / size
NumPy, size , , , Paul Draper:
[sum(group) / size for group in zip(*(data[x::size] for x in range(size)))]