লিস্ট ফাংশন

এই চ্যাপ্টারে আমরা লিস্ট নিয়ে কাজ করার জন্য এর কিছু বিল্ট-ইন মেথড এবং কিছু ফাংশনের ব্যবহার দেখবো। লিস্ট ম্যানিপুলেশনের জন্য কি কি মেথড এভেইলেবল আছে সেগুলো আমরা কিভাবে জানতে পারি? সে জন্য একটা ছোট্ট টি প্স দিচ্ছিঃ টার্মিনালে, IDLE -তে অথবা যেখানে পাইথন কোড রান করছেন সেখানে dir(list) লিখে এন্টার/রান/প্রিন্ট করে দেখতে পারেন। নিচের মত আউটপুট পেয়ে যাবেন -

['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

একটা লিস্ট রিটার্ন হয়েছে। তাই তো? শেষের দিকে খেয়াল করুন - ...append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] অর্থাৎ এগুলো মেথড বিল্ট ইন আছে লিস্ট ম্যানিপুলেশনের জন্য। অর্থাৎ list অবজেক্টের সব গুলো অ্যাট্রিবিউট এবং মেথড এর তালিকা দেখার জন্য এটি ব্যবহার করতে পারেন। এটি শুধু যে list এর ক্ষেত্রেই কাজ করবে তা নয়। dir() এর মধ্যে অন্যান্য অবজেক্ট পাস করেই দেখুন না।

append
যা হোক, তো আমরা জানতে পারলাম list এর মধ্যে append, insert ইত্যাদি করা যেতে পারে। তাহলে চলুন append ট্রাই করে দেখি। কিন্তু এটা কিভাবে কাজ করে সেটাও কারো কাছে না জিজ্ঞেস করেও জেনে নিতে পারেন। আরও একটা টি প্সঃ রান করুন, help(list.append) আর নিচের মত আউটপুট আসবে -

Help on method_descriptor:

append(...)
    L.append(object) -- append object to end

অর্থাৎ এই মেথডের কাজ কি সেটা দেখা যাচ্ছে এবং বলা আছে append object to end. অর্থাৎ কোন একটি লিস্টের শেষে নতুন এলিমেন্ট যুক্ত করতে এই মেথড ব্যবহার করা যাবে। তাহলে উদাহরণ দেখে নেই -

nums = [1, 2, 3]
nums.append(4)
print(nums)

আউটপুট,

[1, 2, 3, 4]

insert
প্রায় একই রকম কিন্তু একটু আলাদা কারনে ব্যবহার করা যেতে পারে insert মেথড। নিচের মত করে -

words = ["A", "C"]
index = 1
words.insert(index, "B")

print(words)

আউটপুট,

['A', 'B', 'C']

অর্থাৎ, লিস্টের কোন একটি নির্দিষ্ট পজিশনে বা ইনডেক্সে কোন এলিমেন্ট যুক্ত করতে চাইলে append এ কাজ হবে না (কারন এটা শেষে যুক্ত করে) বরং insert ব্যবহার করতে হবে। insert মেথডের দুটো প্যারামিটার - প্রথমটি হচ্ছে লিস্টের কোন পজিশনে নতুন এলিমেন্ট যুক্ত করতে চান আর দ্বিতীয় প্যারামিটারটি হচ্ছে যে এলিমেন্ট যুক্ত করতে চান সেটি নিজেই। উপরের উদাহরণে, আমরা words লিস্টের দ্বিতীয় পজিশন তথা 1 ইনডেক্সে B কে যুক্ত করেছি।

index
আরও একটি মেথডের ব্যবহার দেখি। যেমন - index. নিচের উদাহরণে আমরা যেকোনো একটি এলিমেন্ট লিস্টের কোন ইনডেক্সে অবস্থা করছে সেটা চেক করার জন্য index মেথড ব্যবহার করেছি।

letters = ['p', 'q', 'r', 's', 'p', 'u']
print(letters.index('r'))
print(letters.index('p'))
print(letters.index('z'))

আউটপুট,

2
0
ValueError: 'z' is not in list

count
লিস্টের মধ্যে কোন একটি এলিমেন্ট মোট কতবার আছে তার সংখ্যা জানতে নিচের মত করে count() মেথডের ব্যবহার করা যেতে পারে,

letters = ['p', 'q', 'r', 's', 'p', 'u']
letters.count('p')

আউটপুট,

2

এরকম সব গুলো মেথডের কাজ জেনে নিতে help(list.METHOD_NAME) এভাবে রান করে আউটপুট স্ক্রিন থেকে উক্ত মেথডের বিস্তারিত দেখে নিতে পারেন।

অবজেক্ট মেথড বাদেও লিস্ট এর জন্য কিছু উপকারী ফাংশন আছে। যেমন - max(), min(), len() ইত্যাদি. যেমন একটি লিস্টের মধ্যে থাকা এলিমেন্ট গুলোর মধ্যে থেকে বড়টি দেখে নিতে max() ফাংশনের ব্যবহার করা যেতে পারে। উদাহরণ,

nums = [1, 2, 4, 20, 50, 3, 4]
max(nums)

আউটপুট,

50

সংকলন - নুহিল মেহেদী