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]
有总和和范围
我们使用列表推导方法通过应用范围来跟踪连续数字的和,以跟踪收集到的数字。然后,借助循环,将和除以段长度。最后,结果被收集到一个新列表中。
示例
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和卑鄙
在这种方法中,我们利用python模块的帮助,这些模块可以更直接的方式计算这些值。我们继续使用isslice函数在给定范围内对列表中的元素进行切片,然后将均值函数直接应用于新列表中以获得最终结果。
示例
from statistics import meanfrom 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]
以上是 Python列表中每个n长度连续段的平均值 的全部内容, 来源链接: utcz.com/z/321805.html