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