পদ্ধতি ১: Counter + sum()
from collections import Counter
Atup = ('Mon', 'Wed', 'Mon', 'Tue', 'Thu')
Alist = ['Mon', 'Thu']
cnt = Counter(Atup)
res = sum(cnt[x] for x in Alist)
print(res) # 3 (Mon:2, Thu:1)
পদ্ধতি ২: sum() + জেনারেটর (set দিয়ে অপ্টিমাইজ)
Atup = ('Mon', 'Wed', 'Mon', 'Tue', 'Thu')
Alist = ['Mon', 'Thu', 'Mon']
Alist = set(Alist) # ডুপ্লিকেট সরিয়ে দেয়
res = sum(1 for x in Atup if x in Alist)
print(res) # 3
ব্যাখ্যা
- Counter: টাপলের ফ্রিকোয়েন্সি ম্যাপ বানাতে দ্রুত; লিস্টের এলিমেন্ট অনুযায়ী সাম করতে পারে।
- sum + generator: টাপল ট্রাভার্স করে লিস্টের সদস্যতা চেক করে;
set(Alist) দিয়ে O(1) লুকআপ।
- লিস্টে ডুপ্লিকেট থাকলে পদ্ধতি ১ সঠিক (ফ্রিকোয়েন্সি গুণফল), পদ্ধতি ২ ইউনিক মেম্বারশিপ চেক করে।
আউটপুট
3