সমস্যা বিবরণ
একটি লিস্টে শব্দ এবং ডিজিট মিশে আছে। শব্দ গুলোকে (যেগুলো শুধু অক্ষর ধারণ করে) জড়িয়ে একটি স্ট্রিং বানাতে হবে এবং ডিজিট গুলো আলাদা করে রেখে দিতে হবে।
উদাহরণ
Input: ['Tutorials', '56', '45', 'point', '1', '4']
Output: ['Tutorialspoint', '56', '45', '1', '4']
পদ্ধতি ১: লিস্ট কম্প্রিহেনশন + isalpha/isdigit
strings = ['Tutorials', '56', '45', 'point', '1', '4']
words = [element for element in strings if element.isalpha()]
digits = [element for element in strings if element.isdigit()]
result = [''.join(words)] + digits
print(result) # ['Tutorialspoint', '56', '45', '1', '4']
পদ্ধতি ২: filter() ফাংশন ব্যবহার করে
strings = ['Tutorials', '56', '45', 'point', '1', '4']
result = [''.join(filter(str.isalpha, strings)), *filter(str.isdigit, strings)]
print(result) # ['Tutorialspoint', '56', '45', '1', '4']
মূল বিষয়বস্তু
str.isalpha()— শুধু অক্ষর ধারণ করলে Truestr.isdigit()— শুধু ডিজিট ধারণ করলে Truefilter(function, iterable)— ফাংশন True রিটার্ন করলে এলিমেন্ট রাখে- Unpacking operator
*দিয়ে ফিল্টারড রেজাল্ট লিস্টে মাড়া
উপসংহার
দুই পদ্ধতিই একই ফলাফল দেয়। filter() পদ্ধতিটি বেশি ফাংশনাল এবং কনসাইজ। বড় ডেটাসেটের জন্য জেনারেটর ভিত্তিক filter() মেমরি দক্ষ।