কম্পিউটার টিউটোরিয়াল

পাইথনে কন্টিগুয়াস বুলিয়ান রেঞ্জ (Contiguous Boolean Range)

একটি ভ্যালু লিস্ট দেওয়া থাকলে, আমরা জানতে চাই বুলিয়ান ভ্যালুগুলো কোন পজিশনে কন্টিগুয়াস (contiguous)ভাবে আছে। অর্থাৎ, TRUE পাওয়ার পর থেকে FALSE পাওয়া পর্যন্ত TRUEই থাকবে, এবং FALSE পাওয়ার পর থেকে TRUE পাওয়া পর্যন্ত FALSEই থাকবে।

itertools ব্যবহার করে

itertools মডিউল থেকে accumulate এবং groupby ব্যবহার করে। accumulate ফাংশন sum দিয়ে গ্রুপ করা ভ্যালুগুলো ট্র্যাক করে। লিস্টের শেষ ভ্যালু হলো কন্টিগুয়াস রেঞ্জের শেষ পজিশন।

উদাহরণ
from itertools import accumulate, groupby

listA = [False, True, True, False, False]
print("Given list : \n", listA)

res = [0] + list(accumulate(sum(1 for x in y) for x, y in groupby(listA)))
print("Positions for Range of contiguous values:\n", res)
আউটপুট
Given list : [False, True, True, False, False]
Positions for Range of contiguous values: [0, 1, 3, 5]
enumerate এবং zip ব্যবহার করে

enumerate এবং zip ফাংশন ব্যবহার করে প্রতিটি উপাদানকে পরবর্তীটির সাথে তুলনা করা হয়। যদি ভিন্ন হয়, তবে নতুন পজিশন কন্টিগুয়াস রেঞ্জের শুরু বলে ধরা হয়।

উদাহরণ
listA = [False, True, True, False, False]
print("Given list : \n", listA)

res = [e for e, (x, y) in enumerate(zip([2] + listA, listA + [2])) if x != y]
print("Positions for Range of contiguous values:\n", res)
আউটপুট
Given list : [False, True, True, False, False]
Positions for Range of contiguous values: [0, 1, 3, 5]
  1. পাইথনে বুলিয়ান ইন্ডেক্সিং

  2. পাইথনে id() ফাংশন

  3. পাইথন বুলিয়ান অপারেশন (Boolean Operations)

  4. পাইথনে বুলিয়ান অপারেটরগুলো কী কী?