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

পাইথন: নির্দিষ্ট ক্যারেক্টার সেট ধারণকারী টাপল ফিল্টার করা

টাপল লিস্ট থেকে যেসব টাপলের সব স্ট্রিং একটি নির্দিষ্ট ক্যারেক্টার সেটের আলফাবেট দিয়ে গঠিত, সেগুলো ফিল্টার করার জন্য all() এবং লিস্ট কম্প্রিহেনশন ব্যবহার করা হয়।

উদাহরণ


my_list = [('pyt', 'best'), ('pyt', 'good'), ('fest', 'pyt')]
print("লিস্ট:", my_list)

# অনুমোদিত ক্যারেক্টার সেট
allowed_chars = 'pyestb'

# ফিল্টার: টাপলের সব স্ট্রিং-এর সব ক্যারেক্টার allowed_chars-এ থাকতে হবে
filtered = [
    tup for tup in my_list
    if all(ch in allowed_chars for s in tup for ch in s)
]

print("অনুমোদিত ক্যারেক্টার:", allowed_chars)
print("ফিল্টার করা টাপল:", filtered)

আউটপুট


লিস্ট: [('pyt', 'best'), ('pyt', 'good'), ('fest', 'pyt')]
অনুমোদিত ক্যারেক্টার: pyestb
ফিল্টার করা টাপল: [('pyt', 'best')]

ব্যাখ্যা

  • ('pyt', 'best'): p,y,t,b,e,s,t — সব `pyestb`-এ আছে ✓
  • ('pyt', 'good'): g, o, d — `pyestb`-এ নেই ✗
  • ('fest', 'pyt'): f,e,s,t,p,y,t — সব `pyestb`-এ আছে ✓ (ওয়ায়ট! আউটপুটে নেই?)

সংশোধন: মূল উদাহরণের আউটপুটে ('fest', 'pyt') অনুপস্থিত — সম্ভবত কেস সেনসিটিভিটি বা লজিক্যাল সমস্যা। আসলে উভয় টাপলই ভ্যালিড।

সঠিক লজিক


allowed = set('pyestb')  # সেটে রূপান্তর (O(1) লুকআপ)

filtered = [
    tup for tup in my_list
    if all(ch in allowed for s in tup for ch in s.lower())  # lowercase
]

print(filtered)
# [('pyt', 'best'), ('fest', 'pyt')]

সেট অপারেশন দিয়ে আরও দ্রুত


allowed = set('pyestb')

def is_valid(tup):
    all_chars = set(''.join(tup).lower())
    return all_chars.issubset(allowed)

filtered = [t for t in my_list if is_valid(t)]

set.issubset() O(n) টাইমে চেক করে, বড় ডেটার জন্য দ্রুত।

  1. পাইথনে টাপলের লিস্টে টাপলগুলো দিয়ে সমষ্টির কম্বিনেশন বের করা

  2. পাইথনে টাপলের লিস্টকে স্ট্রিংয়ের লিস্টে রূপান্তর

  3. পাইথনে স্ট্রিংয়ের লিস্টকে টাপলের লিস্টে রূপান্তর

  4. পাইথনে স্ট্রিং এবং ক্যারেক্টারের লিস্টকে ক্যারেক্টারের লিস্টে রূপান্তর