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

পাইথন প্রোগ্রাম: মনো-ডিজিট (Mono-digit) এলিমেন্ট বের করা

এক লিস্ট থেকে যেসব এলিমেন্ট মনো-ডিজিট (সকল ডিজিট একই, যেমন ১১১, ৭৭৭৭, ৫) সেগুলো বের করার জন্য লিস্ট কম্প্রিহেনশন, all() এবং স্ট্রিং কম্পারিজন ব্যবহার করা হয়।

উদাহরণ


my_list = [863, 1, 463, "pyt", 782, 241, "is", 639, 4, "fun"]
print("লিস্ট:", my_list)

# মনো-ডিজিট চেক: স্ট্রিংয়ের সব ক্যারেক্টার প্রথম ক্যারেক্টার সমান
mono_digits = [
    x for x in my_list 
    if isinstance(x, int) and all(ch == str(x)[0] for ch in str(x))
]

print("মনো-ডিজিট এলিমেন্ট:", mono_digits)

আউটপুট


লিস্ট: [863, 1, 463, 'pyt', 782, 241, 'is', 639, 4, 'fun']
মনো-ডিজিট এলিমেন্ট: [1, 4]

ব্যাখ্যা

  • isinstance(x, int) — শুধু ইন্টিজার চেক (স্ট্রিং বাদ)
  • str(x) — সংখ্যাকে স্ট্রিংে রূপান্তর
  • all(ch == str(x)[0] for ch in str(x)) — সব ডিজিট প্রথম ডিজিটের সমান কিনা
  • ১ → "১" (১ ডিজিট, স্বয়ংক্রিয় মনো-ডিজিট)
  • ৪ → "৪" (১ ডিজিট)
  • ১১, ২২২, ৭৭৭৭ — সব মনো-ডিজিট

রেগুলার এক্সপ্রেশন দিয়ে


import re

mono_digits = [
    x for x in my_list 
    if isinstance(x, int) and re.fullmatch(r'(\d)\1*', str(x))
]
# (\d)\1* = একই ডিজিট এক বা অধিক বার

সেট দিয়ে (O(1) চেক)


mono_digits = [
    x for x in my_list 
    if isinstance(x, int) and len(set(str(x))) == 1
]
# set(str(x)) → ইউনিক ডিজিটের সেট, দৈর্ঘ্য ১ মানে মনো-ডিজিট

len(set(str(x))) == 1 সবচেয়ে সংক্ষিপ্ত এবং পঠনযোগ্য।

নেগেটিভ সংখ্যা হ্যান্ডলিং


def is_mono_digit(n):
    if not isinstance(n, int):
        return False
    s = str(abs(n))  # নেগেটিভ হলে '-' বাদ
    return len(set(s)) == 1

# টেস্ট
print([x for x in [-111, -22, 333, -4444, 5] if is_mono_digit(x)])
# [-111, -22, 333, -4444, 5]
  1. পাইথনে লিস্ট থেকে বিজোড় সংখ্যা প্রিন্ট করা

  2. পাইথনে লিস্ট থেকে নেগেটিভ সংখ্যা প্রিন্ট করা

  3. পাইথনে লিস্ট থেকে জোড় সংখ্যা প্রিন্ট করা

  4. পাইথনে একটি লিস্টের সব সাবলিস্ট প্রিন্ট করার প্রোগ্রাম