Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

Python - ค่าเฉลี่ยของแต่ละส่วนต่อเนื่อง n ค่าใน List

เรามี List ที่ประกอบด้วยตัวเลขเท่านั้น เราต้องการหาค่าเฉลี่ยของชุดตัวเลขที่ต่อเนื่องกันจาก List ซึ่งจะเลื่อนจากตัวแรกไปตัวถัดไป ต่อไปเรื่อยๆ

ตัวอย่าง

ตัวอย่างด้านล่างทำให้เข้าใจง่ายขึ้นสำหรับการหาค่าเฉลี่ยของแต่ละ 4 ตัวเลขที่ต่อเนื่องกันใน List

List ที่กำหนด: [10, 12, 14, 16, 18, 20, 22, 24, 26]
ค่าเฉลี่ยของแต่ละส่วน 4 ตัวเลขติดกัน: [13.0, 15.0, 17.0, 19.0, 21.0, 23.0]

ใช้ sum และ range

เราใช้แนวคิด List Comprehension เพื่อหาผลรวมของตัวเลขที่ต่อเนื่องกัน โดยใช้ range ติดตามจำนวนตัวเลขที่รวบรวม แล้วหารผลรวมด้วยความยาวส่วน (segment length) ผลลัพธ์จะถูกรวบรวมใน List ใหม่

ตัวอย่าง

listA = [10, 12, 14, 16, 18, 20, 22, 24, 26]
print("List ที่กำหนด:\n", listA)
seg = 4
# List comprehension
res = [sum(listA[m:m + seg]) / seg
       for m in range(len(listA) - seg + 1)]
print("List ใหม่พร้อมค่าเฉลี่ย:\n", res)

การรันโค้ดข้างต้นจะได้ผลดังนี้ −

List ที่กำหนด: [10, 12, 14, 16, 18, 20, 22, 24, 26]
List ใหม่พร้อมค่าเฉลี่ย: [13.0, 15.0, 17.0, 19.0, 21.0, 23.0]

ใช้ islice และ mean

ในวิธีนี้เราใช้โมดูล Python ที่คำนวณค่าเหล่านี้ได้โดยตรงมากขึ้น เราตัดส่วน (slice) สมาชิกของ List ในช่วงที่กำหนดด้วยฟังก์ชัน islice จากนั้นใช้ฟังก์ชัน mean คำนวณค่าเฉลี่ยโดยตรง

ตัวอย่าง

from statistics import mean
from itertools import islice

listA = [10, 12, 14, 16, 18, 20, 22, 24, 26]
print("List ที่กำหนด:\n", listA)
# ใช้ islice และ mean
listB = zip(*(islice(listA, i, None) for i in range(4)))
res = list(map(mean, listB))
print("List ใหม่พร้อมค่าเฉลี่ย:\n", res)

ผลลัพธ์

การรันโค้ดข้างต้นจะได้ผลดังนี้ −

List ที่กำหนด: [10, 12, 14, 16, 18, 20, 22, 24, 26]
List ใหม่พร้อมค่าเฉลี่ย: [13, 15, 17, 19, 21, 23]