हमारे पास केवल संख्याओं वाली एक सूची है। हम सूची से अनुक्रमिक संख्याओं के एक सेट का औसत प्राप्त करने की योजना बना रहे हैं जो पहले नंबर से अगली संख्या तक और फिर अगली संख्या तक और इसी तरह आगे बढ़ता रहता है।
उदाहरण
नीचे दिया गया उदाहरण सूची के प्रत्येक 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]
आइसलिस और माध्य के साथ
इस दृष्टिकोण में हम अजगर मॉड्यूल की मदद लेते हैं जो इन मूल्यों की अधिक प्रत्यक्ष तरीके से गणना कर सकते हैं। हम isslice फ़ंक्शन का उपयोग करके दी गई श्रेणी में सूची के तत्वों को काटते रहते हैं और फिर अंतिम परिणाम प्राप्त करने के लिए सीधे नई सूची पर माध्य फ़ंक्शन लागू करते हैं।
उदाहरण
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]