আমাদের কাছে একটি সংখ্যা-মাত্রা লিস্ট আছে। আমরা লিস্ট থেকে ধারাবাহিক সংখ্যা গুলোর গড় বের করতে চাই, যা প্রথম সংখ্যা থেকে শুরু করে পরবর্তী সংখ্যায় স্লাইড (roll) করে যায়।
নিচের উদাহরণটি লিস্টের প্রতিটি ৪-লেথ ধারাবাহিক উপাদানের গড় বের করার প্রয়োজনীয়তা সহজ করে দিয়েছে।
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]
লিস্ট কম্প্রিহেনশন ব্যবহার করে ধারাবাহিক সংখ্যাগুলোর যোগফল বের করা হয় 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 ফাংশন সরাসরি প্রয়োগ করে ফলাফল পাওয়া যায়।
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]