নেস্টেড লিস্ট (ম্যাট্রিক্স) থেকে যেসব সারিতে কোনো ইন্টিজার (নাম্বার) আছে, সেগুলো সরিয়ে শুধু স্ট্রিং-ওনلی সারি রাখার জন্য isinstance(), any() এবং লিস্ট কম্প্রিহেনশন ব্যবহার করা হয়।
উদাহরণ
my_list = [[14, 'Pyt', 'fun'], ['Pyt', 'is', 'best'], [23, 51], ['Pyt', 'fun']]
print("মূল ম্যাট্রিক্স:")
for row in my_list:
print(" ", row)
# ফিল্টার: সারিতে কোনো int নেই এমন সারি রাখা
filtered = [
row for row in my_list
if not any(isinstance(x, int) for x in row)
]
print("\nনাম্বার-ফ্রি সারিগুলো:")
for row in filtered:
print(" ", row)
আউটপুট
মূল ম্যাট্রিক্স:
[14, 'Pyt', 'fun']
['Pyt', 'is', 'best']
[23, 51]
['Pyt', 'fun']
নাম্বার-ফ্রি সারিগুলো:
['Pyt', 'is', 'best']
['Pyt', 'fun']
ব্যাখ্যা
isinstance(x, int)— x ইন্টিজার কিনা চেক করেany(...)— সারিতে কমপক্ষে একটা ইন্টিজার আছে কিনাnot any(...)— ইন্টিজার নেই এমন সারি নির্বাচন
বিকল্প: all() ব্যবহার
# সব এলিমেন্ট non-int হলে রাখা
filtered = [row for row in my_list if all(not isinstance(x, int) for x in row)]
সব নাম্বারিক টাইপ (int, float, bool) বাদ দিতে
import numbers
filtered = [
row for row in my_list
if not any(isinstance(x, numbers.Number) and not isinstance(x, bool) for x in row)
]
# bool হল int-এর সাবক্লাস, তাই আলাদা চেক
Pandas-এ প্রয়োগ
import pandas as pd
df = pd.DataFrame(my_list)
# যেকোনো কলামে numeric ডেটা আছে এমন সারি ড্রপ
numeric_cols = df.select_dtypes(include='number').columns
filtered_df = df[~df[numeric_cols].notna().any(axis=1)]