Python 列表中每个 n 长度的连续片段的平均值
我们有一个只包含数字的列表。我们计划获取列表中一组连续数字的平均值,这些数字从第一个数字开始,然后滚动到下一个数字,再到下一个数字,依此类推。
示例
下面的示例简化了查找列表中每个 4 个长度的连续元素的平均值的需要。
Given list: [10,12,14,16,18,20,22,24,26] Average of every segment of 4 consecutive numbers: [13.0, 15.0, 17.0, 19.0, 21.0, 23.0]
使用 sum 和 range
我们使用列表推导式方法通过应用 range 来获取连续数字的总和,以跟踪我们收集了多少个数字。然后,我们借助循环将总和除以段长度。最后,结果被收集到一个新的列表中。
示例
listA = [10,12,14,16,18,20,22,24,26]
print("Given list:\n",listA)
seg = 4
# List comprehension
res = [sum(listA[m:m + seg])/seg
for m in range(len(listA) - seg + 1)]
print("new list with averages:\n ",res)运行以上代码,我们得到以下结果:
Given list: [10, 12, 14, 16, 18, 20, 22, 24, 26] new list with averages: [13.0, 15.0, 17.0, 19.0, 21.0, 23.0]
使用 islice 和 mean
在这种方法中,我们借助 Python 模块,这些模块可以更直接地计算这些值。我们使用 isslice 函数在给定范围内对列表的元素进行切片,然后直接对新列表应用 mean 函数以获得最终结果。
示例
from statistics import mean
from itertools import islice
listA = [10,12,14,16,18,20,22,24,26]
print("Given list:\n",listA)
# With islice and mean
listB = zip(*(islice(listA, i, None) for i in range(4)))
res = list(map(mean, listB))
print("new list with averages:\n ",res)输出
运行以上代码,我们得到以下结果:
Given list: [10, 12, 14, 16, 18, 20, 22, 24, 26] new list with averages: [13, 15, 17, 19, 21, 23]
广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP