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

পাইথন প্রোগ্রাম: সিরিজে 'a' দিয়ে শুরু ও 'a' দিয়ে শেষ হওয়া স্ট্রিং ফিল্টার করুন

সমস্যা বিবরণ

একটি স্ট্রিং সিরিজ দেওয়া আছে। লক্ষ্য হলো যেসব স্ট্রিং 'a' অক্ষরে শুরু হয় এবং 'a' অক্ষরে শেষ হয়, সেগুলো ফিল্টার করে বের করা।

ইনপুট সিরিজ

0    apple
1   oranges
2    alpha
3    aroma
4     beta

সমাধান ১: রেগুলার এক্সপ্রেশন (Regex) ব্যবহার করে

  1. রেজেক্স প্যাটার্ন: r'^[a]$|^([a]).*\\1$' — এটি একক 'a' বা 'a' দিয়ে শুরু ও 'a' দিয়ে শেষ হওয়া স্ট্রিং ম্যাচ করে।
  2. ফিল্টার করুন লুপ ও re.search ব্যবহার করে।
  3. সিরিজে ফিল্টার 적용 করুন isin() দিয়ে।
import pandas as pd
import re

l = ["apple","oranges","alpha","aroma","beta"]
data = pd.Series(l)
exp = r'^[a]$|^([a]).*\1$'
ls = []
for i in data:
    if re.search(exp, i):
        ls.append(i)
print(data[data.isin(ls)])

সমাধান ২: স্ট্রিং মেথড startswith() ও endswith() ব্যবহার করে (সरल ও পঠনীয়)

import pandas as pd

l = ["apple","oranges","alpha","aroma","beta"]
data = pd.Series(l)

# ল্যাম্বডা ও ফিল্টার ব্যবহার করে
result = list(filter(lambda x: x.startswith('a') and x.endswith('a'), l))
print(data[data.isin(result)])

# অথবা ভেক্টরাইজড স্ট্রিং অ্যাক্সেসর দিয়ে (সর্বোত্তম)
mask = data.str.startswith('a') & data.str.endswith('a')
print(data[mask])

আউটপুট (দুই পদ্ধতিরই)

2    alpha
3    aroma
dtype: object

ব্যাখ্যা: 'alpha' (a...a) এবং 'aroma' (a...a) শর্ত পূরণ করে। 'apple' (a...e) এবং 'oranges' (o...s) পূরণ করে না। ভেক্টরাইজড পদ্ধতি data.str.startswith('a') & data.str.endswith('a') সবচেয়ে দ্রুত এবং পাইথনিক।

  1. পাইথন প্রোগ্রাম: সিরিজ থেকে নির্দিষ্ট রেঞ্জের (Range) এলিমেন্ট ফিল্টার করুন

  2. পাইথন প্রোগ্রাম: সিরিজে ডুপ্লিকেট (Duplicate) এলিমেন্ট আছে কিনা চেক করুন

  3. পাইথন প্রোগ্রাম: সিরিজ থেকে শুধু ইন্টিজার (Integer) এলিমেন্ট ফিল্টার করুন

  4. পাইথন প্রোগ্রাম: সিরিজ থেকে বৈধ (Valid) তারিখ (Date) ফিল্টার করুন