list

পাইথনে ৬ ধরণের বিল্ট ইন টাইপ আছে। সেগুলো হচ্ছে – numeric, sequence, mapping, class, instance এবং exception. সব থেকে ব্যাসিক ডাটা স্ট্রাকচারটি হচ্ছে sequence. এর প্রত্যেকটি এলিমেন্টের জন্য একটি নাম্বার অ্যাসাইন করা হয় যাকে ইনডেক্স বা পজিশন বলা যায়। প্রথম ইনডেক্স শূন্য, তারপর ১ এবং এরপর ক্রমিক আকারে বাড়তে থাকে।
পাইথনে আবার ৩ ধরণের ব্যাসিক sequence টাইপ আছে যেগুলো হচ্ছে list, tuple, এবং xrange object. এই চ্যাপ্টারে আমরা আলোচনা করবো list নিয়ে।

দুটো স্কয়ার ব্র্যাকেট এবং এর মধ্যে কমা দিয়ে আলাদা আলাদা এলিমেন্ট যুক্ত করে একটি লিস্ট তৈরি করা যায়। আর আগেই বলা হয়েছে, এর এলিমেন্ট গুলো ইনডেক্স অনুযায়ী সাজানো থাকে অর্থাৎ ০, ১, ২ এরকম ক্রমে। যেমন –

words = [“Hello”, “world”, “!”]

print(words[0])

print(words[1])

print(words[2])

এখানে words একটি লিস্ট টাইপ ভ্যারিয়েবল যার মধ্যে ৩টি এলিমেন্ট আছে যেগুলো হল – Hello, world এবং ! এই তিনটি string। লিস্টের যেকোনো এলিমেন্টকে অ্যাক্সেস করার জন্য ওই লিস্টের নাম, সাথে স্কয়ার ব্র্যাকেটের মধ্যে তার ইনডেক্স নাম্বার দিতে হয়। উপরে যেভাবে তিনটি এলিমেন্ট প্রিন্ট করা হয়েছে, সেভাবে।

আউটপুট,

Hello

world

!

ফাকা list
নিচের মত করে একটি ফাকা লিস্ট তৈরি করা যায় –

my_list = []

print(my_list)

আউটপুট,

[]

এলিমেন্ট টাইপ
পাইথনে একটি লিস্টের মধ্যে বিভিন্ন টাইপের ডাটা বা এলিমেন্ট রাখা যেতে পারে। যেমন একটি লিস্টের এলিমেন্ট হিসেবে কিছু নাম্বার, কিছু স্ট্রিং এমনকি অন্য এক বা একাধিক লিস্টকেও রাখা যেতে পারে। যদিও সাধারণত একটি লিস্টে একই রকম এলিমেন্ট রাখা ভালো প্র্যাকটিস।

উদাহরণ,

number = 1

my_numbers = [number, 2, 3]

things = [“Numbers”, 0, my_numbers, 4.56]

print(things[0])

print(things[1])

print(things[2])

আউটপুট,

Numbers

0

[1, 2, 3]

list হিসেবে string
একটি স্ট্রিং টাইপ ভ্যালু পাইথনে লিস্ট হিসেবে আচরণ করে অর্থাৎ স্ট্রিং -এর প্রত্যেকটি ক্যারেক্টার একটি কাল্পনিক লিস্টের এক একটি এলিমেন্ট হিসেবে মনে হয়। নিচের উদাহরণটি দেখি,

str = “Hello world!”

print(str[6])

আউটপুট,

w

অর্থাৎ, str = “Hello world!” এবং str = [“H”, “e”, “l”, “l”, “o”, ” “, “w”, “o”, “r”, “l”, “d”]কার্যত একই। আর তাই str[6] এর মান আসছে w.

list অপারেশন

এই চ্যাপ্টারে আমরা আলোচনা করবো list এর কিছু ব্যাসিক অপারেশন নিয়ে। আগের চ্যাপ্টারে আমরা দেখেছি কিভাবে একটি লিস্টের নির্দিষ্ট ইনডেক্সে থাকা একটি এলিমেন্টকে অ্যাক্সেস করা যায়। তাহলে এবার দেখি, কিভাবে একটা নির্দিষ্ট ইনডেক্সে বা পজিশনে নতুন কোন এলিমেন্ট যুক্ত করা যায়,

my_numbers = [1, 2, 3, 5]

my_numbers[3] = 4

print(my_numbers)

আউটপুট,

[1, 2, 3, 4]

অর্থাৎ my_numbers লিস্টের 3 পজিশনে আগে ছিল 5 এবং সেই অবস্থানে আমরা নতুন ভ্যালু সেট করলাম 4. my_numbers[3] = 4 এভাবে। আর তাই my_numbers লিস্ট প্রিন্ট করার ফলে আউটপুট আসলো এই লিস্টের আপডেটেড ভ্যালু গুলো।

লিস্টের যোগ গুন
মজার ব্যাপার হচ্ছে string এর মত করে লিস্ট নিয়েও যোগ বা গুনের কাজ করা যায়। যেমন – নিচের উদাহরণটা দেখে নেই,

first_list = [1, 2, 3]

print(first_list + [4, 5, 6])

print(first_list * 3)

আউটপুট,

[1, 2, 3, 4, 5, 6]

[1, 2, 3, 1, 2, 3, 1, 2, 3]

লিস্টের মধ্যের এলিমেন্ট চেক
কোন লিস্টের মধ্যে নির্দিষ্ট কোন এলিমেন্ট আছে কিনা সেটা চেক করার জন্য in অপারেটর ব্যবহার করা হয়। যদি এলিমেন্টটি লিস্টের মধ্যে এক বা একাধিকবার থাকে তাহলে এটি True রিটার্ন করে অন্যথায় False রিটার্ন করে।

উদাহরণ,

fruits = [“apple”, “orange”, “pineappe”, “grape”]

print(“orange” in fruits)

print(“rice” in fruits)

print(“apple” in fruits)

আউটপুট,

True

False

True

একই ভাবে এর সাথে not অপারেটর ব্যবহার করে কোন এলিমেন্টের অনুপস্থিতিও চেক করা যাতে পারে। যেমন –

fruits = [“apple”, “orange”, “pineappe”, “grape”]

print(“orange” not in fruits)

print(not “rice” in fruits)

আউটপুট,

False

True

Questions