Python - 平均列表中的每个“n”元素

blo*_*ood 1 python average list

我需要平均nPython 列表中的每个元素,n = 3在这个例子中:

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9]
Run Code Online (Sandbox Code Playgroud)

这样输出列表将是:

list2 = [2, 2, 2, 5, 5, 5, 8, 8, 8]
Run Code Online (Sandbox Code Playgroud)

Jea*_*bre 5

您可以[2,5,8]像这样在列表理解中计算列表:

list1 = [1,2,3,4,5,6,7,8,9]
n = 3

list2 = [sum(list1[i:i+n])//n for i in range(0,len(list1),n)]
Run Code Online (Sandbox Code Playgroud)

然后按照list1您的要求将其放回(保留大小),如下所示:

for i in range(len(list1)):
    list1[i] = list2[i//n]
Run Code Online (Sandbox Code Playgroud)

或使用列表理解:

list1 = [list2[i//n] for i in range(len(list1))]
Run Code Online (Sandbox Code Playgroud)

最终编辑:找到了一个不错的 oneliner 来总结一下:

import itertools
list1 = list(itertools.chain.from_iterable([i]*n for i in [sum(list1[i:i+n])//n for i in range(0,len(list1),n)]))
Run Code Online (Sandbox Code Playgroud)