পাইথন – list

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

স্ট্রিং যেমন আমরা রাখতাম ডাবল কোটেশন বা সিঙ্গেল কোটেশনের মধ্যে, লিস্টের প্রতিটি আইটেম রাখতে হয় তৃতীয় বন্ধনীর ভেতর [ ] কমা দিয়ে আলাদা করে।

লিস্ট তৈরি করা

আমরা লিস্ট তৈরি করতে পারি এভাবেঃ

colors = [‘red’, ‘green’, ‘blue’]

উপরে আমরা colors নামে একটা ভ্যারিয়েবল নিয়েছি যেখানে মৈলিক রং গুলো রেখেছি। এগুলোকে আমরা বলব আইটেম (item)। এখন আমরা যদি colors লিস্ট এর প্রথম আইটেম প্রিন্ট করতে চাই, তাহলে লিখবঃ

print colors[0]

লিস্ট এর দ্বিতীয় আইটেম প্রিন্ট করতেঃ

print (colors[1])

লিস্ট এর তৃতীয় আইটেম প্রিন্ট করতেঃ

print colors[2]

এখানে ০ , 1, 2 এগুলোকে বলে লিস্টের ইনডেক্স। লিস্টের ইনডেক্স শুর হয় ০ থেকে।
লিস্টের সব গুলো আইটেম প্রিন্ট করতে লিখতে পারি এভাবেঃ

print (colors)

যা colors লিস্টের সব গুলো আইটেম আউটপুট দিবে এভাবেঃ
[‘red’, ‘green’, ‘blue’]

লিস্টের কোন আইটেম পাওয়ার জন্য আমরা নেগেটিভ ইনডেক্স ব্যবহার করতে পারি। যেমন -1 ব্যবহার করলে লিস্টের সর্বশেষ আইটেম প্রিন্ট করবে। -2 ব্যবহার করলে লিস্টের শেষের দিক থেকে দ্বিতীয় আইটেম প্রিন্ট করবে।

print (colors[-1])

লিখলে প্রিন্ট করবে blue।

print (colors[-2])

লিখলে প্রিন্ট করবে green এভাবে।

আমরা যদি এমন একটা ইন্ডেক্স এক্সেস করতে চাই, যা লিস্টে নেই, তাহলে এরর দেখাবে। যেমন আমাদের লিস্টে আছে মাত্র ৫টা আইটেম। আমরা চাইলে ৪ ইন্ডেক্স পর্যন্ত এক্সেস করতে পারব। এখন যদি ৫ বা এর থেকে বড় কোন ইন্ডেক্স এক্সেস করতে চাই, তাহলে এরর দেখাবে।
print (colors[10]) লিখে দেখতে পারেন।
লিখে যদি আমরা প্রোগ্রামটি রান করি, তাহলে এরর দেখাবে।

পাইথনে একটা মজার সুবিধা হচ্ছে ভিন্ন ভিন্ন ডেটা টাইপ একই লিস্টে রাখা যায়। আমাদের সবার ঘরেই একটা বক্স থাকে না? যেটাতে প্রয়োজনীয় অপ্রয়োজনীয় সব কিছু আমরা ঢুকিয়ে রাখি, তেমন আরকি। যেমনঃ

box = [‘Python', 3.1416, 911]

এই লিস্ট এক এক আইটেম এক এক টাইপের। আমরা ইচ্ছে করলে কোন আইটেম কোন টাইপের, তাও বের করে পারি।

print(type (box[0]))

লিখলে ইন্ডেক্স 0 এর আইটেম কোন টাইপের, তা প্রিন্ট করবে। সম্পূর্ণ প্রোগ্রামঃ

box = ['Python', 3.1416, 911]
print(type (box[0]))
print(type (box[1]))
print(type (box[2]))

যা আউটপুট দিবেঃ

<class ‘str’>
<class ‘float’>

যার কারণ হচ্ছে এই লিস্টের প্রথম আইটেম হচ্ছে একটা স্ট্রিং। দ্বিতীয় আইটেম হচ্ছে একটা ফ্লোটিং পয়েন্ট ভ্যালু। তৃতীয় আইটেম হচ্ছে একটা ইন্টিজার ভ্যালু।

লিস্টে নতুন আইটেম যুক্ত করা

দুই ভাবে আমরা লিস্টে নতুন আইটেম যুক্ত করতে পারি। append() এবং extend() মেথড ব্যাবহার করে।

append()

লিস্টে নতুন কোন আইটেম যোগ করার জন্য append মেথড ব্যবহার করা হয়।

আমরা জানি রংধনুর সাত রং হচ্ছে Red, orange, yellow, green, blue, indigo & violet। এর আগে আমরা colors নামে একটা লিস্ট তৈরি করেছিলামঃ

colors = [‘red’, ‘green’, ‘blue’]  

আমাদের উপরের colors ভ্যারিয়েবলে অলরেডি তিনটি রং রয়েছে এই সাত রং এর মধ্যে। বাকি রং গুলো আমরা চাইলে যুক্ত করে দিতে পারি। যেমন colors লিস্টে orange যুক্ত করতে চাইলে এভাবে যুক্ত করতে পারবঃ

colors.append('orange')

এরপর colors প্রিন্ট করে দেখলে আমরা দেখতে পাবো এই ভ্যারিয়েবলে আরো একটা আইটেম যুক্ত হয়েছে।

সম্পুর্ণ প্রোগ্রামঃ

colors = ['red', 'green', 'blue']
colors.append('orange')
print(colors)

যা প্রিন্ট করবেঃ

['red', 'green', 'blue', 'orange']

extend()

এখন হয়তো মাথায় আসতে পারে আমরা এক সাথে কিভাবে একের অধিক আইটেম এই লিস্টে যুক্ত করব। তার জন্য রয়েছে আরেকটা মেথড। আর তা append() এর মতই। তার নাম extend() মেথড।

যেমন আমাদের লিস্টে এখন রয়েছে চারটা আইটেম। আমরা বাকি তিনটে আইটেম যুক্ত করব। তার জন্য লিখবঃ

colors.extend(['yellow', 'indigo', ‘violet'])

সম্পূর্ণ প্রোগ্রামঃ

colors = ['red', 'green', 'blue']
colors.append('orange')
colors.extend(['yellow', 'indigo', 'violet'])
print(colors)

আউটপুটে আমরা দেখতে পাবোঃ

['red', 'green', 'blue', 'orange', 'yellow', 'indigo', ‘violet']

এখানে মনে রাখতে হবে যে extend() মেথডে একটা লিস্ট আগের লিস্টে যুক্ত হয়। তাই যখন extend() মেথড ব্যবহার করে নতুন আইটেম যুক্ত করব, তখন স্কয়ার ব্র্যাকেট [] এর মধ্যে আইটেম গুলো দিতে হবে।

লিস্টের সাইজ বের করা

লিস্টের মধ্যে সর্বোমোট কতটা আইটেম রয়েছে তা বের করার জন্য len মেথড ব্যবহার করা হয়। যেমন len(colors) লিখলে colors লিস্টে কতগুলো আইটেম রয়েছে, তা বলে দিবে।

সম্পূর্ণ প্রোগ্রামঃ

colors =['red', 'green', 'blue', 'orange', 'yellow', 'indigo', 'violet']
print(len(colors))

যা আউটপুট দিবে 7

লিস্ট থেকে আইটেম বাদ দেওয়া

লিস্ট থেকে কোন আইটেম বাদ দেওয়ার জন্য দুইটা মেথড ব্যবহার করতে পারি। একটা হচ্ছে remove এবং আরেকটা হচ্ছে del।

remove()

লিস্ট থেকে একটা আইটেম সরানো বা বাদ দেওয়ার জন্য আমরা remove মেথড ব্যবহার করতে পারি। যেমনঃ

colors.remove(‘red’) 

তাহলে colors লিস্ট থেকে red মুছে যাবে। আমাদের লিস্টে আইটেম থাকবে তখন ৬ টা। সম্পূর্ণ প্রোগ্রামঃ

colors =['red', 'green', 'blue', 'orange', 'yellow', 'indigo', 'violet']
colors.remove('red')
print(colors)

আউটপুটঃ

['green', 'blue', 'orange', 'yellow', 'indigo', 'violet']

আমরা দেখব red ছাড়া বাকি আইটেম গুলো আউটপুট দিচ্ছে।

del()

রিমুভ মেথড দিয়ে কোন আইটেম বাদ দিতে চাইলে আইটেমের নাম জানতে হয়। আমরা চাইলে লিস্টের ইনডেক্স অনুযায়ীও যে কোন আইটেম বাদ দিতে পারব। আর তা লিখতে হয় এভাবেঃ

del colors[index]

colors ভ্যারিয়েবলের দিকে আবার তাকাইঃ

colors =['red', 'green', 'blue', 'orange', 'yellow', 'indigo', 'violet']

আমরা জানি লিস্টের ইনডেক্স শুরু হয় 0 থেকে। এখন যদি আমরা green মুছতে চাই, তাহলে লিখতে হবে এভাবেঃ

del colors[1]

Green কালারটা লিস্টের দ্বিতীয় আইটেম হলেও প্রথম ইনডেক্সে রয়েছে। 0 ইনডেক্সে রয়েছে red, 1 ইনডেক্সে রয়েছে green, 2 ইনডেক্সে রয়েছে blue ইত্যাদি। সম্পূর্ণ প্রোগ্রামঃ

colors =['red', 'green', 'blue', 'orange', 'yellow', 'indigo', 'violet']
del colors[1]
print(colors)

যা আউটপুট দিবে

['red', 'blue', 'orange', 'yellow', 'indigo', ‘violet']

আমরা চাইলে একের অধিক আইটেম এক সাথে মুছে ফেলতে পারি। তার জন্য কোন ইন্ডেক্স থেকে কোন ইনডেক্স পর্যন্ত মুছব, তা বলে দিতে হবে। যেমনঃ

del colors[2:5]

এভাবে লিখলে লিস্টের 2,3,4 ইনডেক্সে থাকা আউইটেম গুলো মুছে যাবে। 5 নাম্বার ইনডেক্সের আইটেম মুছবে না। উদাহরণঃ

colors =['red', 'green', 'blue', 'orange', 'yellow', 'indigo', 'violet']
del colors[2:5]
print(colors)

যা আউটপুট দিবেঃ

['red', 'green', 'indigo', 'violet']

আমরা দেখলাম blue, orange, yellow মুছে গেছে। এভাবে আমরা যে কোন ইনডেক্স সেট করতে পারি। যেমন del colors[3:6], del colors[1:4] ইত্যাদি।

লিস্ট থেকে আইটেম বের করা

লিস্ট থেকে কোন আইটেম বের করে আনার জন্য pop মেথড ব্যবহার করা হয়। বের করে আনলে লিস্ট থেকে ঐ আইটেমটা মুছে যাবে।

ডিলেট বা রিমুভ মেথড দিয়েও কোন আইটেম মুছে ফেলতে পারতাম। কিন্তু pop মেথড দিয়ে বের করে আনলে ঐ আইটেম অন্য কোন কাজেও লাগাতে পারব। যেমন color.pop(2) লিখলে দুই নং ইনডেক্স বা তৃতীয় আটেমটি আমাদের রিন্টার্ণ করবে। নিচের প্রোগ্রামটি দেখিঃ

colors =['red', 'green', 'blue', 'orange', 'yellow', 'indigo', 'violet']
popped = colors.pop(2)
print(popped)
print(colors)

যার আউটপুট হচ্ছেঃ

blue
['red', 'green', 'orange', 'yellow', 'indigo', ‘violet']

লিস্টের দ্বিতীয় ইনডেক্সে ছিল blue, তা আমরা বের করে নিয়েছি। বের করার পর লিস্ট থেকে ঐ আইটেম মুছে গিয়েছে।

এখন যদি pop মেথডে কোন ইনডেক্স দেওয়া না হয়, তাহলে তা লিস্টের সর্বশেষ আইটেম বের করে দিবে। যেমন ইনডেক্স না দিয়ে উপরের প্রোগ্রামটাই লিখিঃ

colors =['red', 'green', 'blue', 'orange', 'yellow', 'indigo', 'violet']
popped = colors.pop()
print(popped)
print(colors)

যা আউটপুট দিবেঃ

violet
['red', 'green', 'blue', 'orange', 'yellow', ‘indigo']

আমরা দেখলাম লিস্টের শেষ আইটেমটি বের করে দিয়েছে।

লিস্ট সাজানো

লিস্টকে সাজানোর জন্য রয়েছে sort মেথড। যেমন সংখ্যার ক্ষেত্রে আমরা উদ্ধক্রম বা নিন্মক্রম অনুযায়ী সাজাতে পারি। শব্দের ক্ষেত্রে আমরা বর্ণানুক্রমে সাজাতে পারি।

উদাহরণ হিসেবে এক থেকে নয় পর্যন সংখ্যা গুলোর একটা লিস্ট নিলাম। যেখানে সংখ্যা গুলো এলোমেলো অবস্থায় রয়েছে।

numbers = [4,6,1,3,8,5,7,9,2]

এখন এই সংখ্যা গুলোকে আমরা সহজে সাজিয়ে নিতে পারি এভাবেঃ

numbers.sort()
numbers = [4,6,1,3,8,5,7,9,2]
numbers.sort()
print(numbers)

যা আউটপুট দিবেঃ

[1, 2, 3, 4, 5, 6, 7, 8, 9]

সর্ট মেথডটি স্বাভাবিক ভাবে যে কোন সংখ্যা বা শব্দ উদ্ধক্রমে (Ascending order) সাজিয়ে দিবে।

নিম্নক্রমে (Descending order) ভাবে সাজাতে চাইলে তা বলে দিতে হবে। তার জন্য reverse=True প্যারামিটারটি যুক্ত করে দিতে হবে। যেমনঃ

numbers = [4,6,1,3,8,5,7,9,2]
numbers.sort(reverse=True)
print(numbers)

যা আউটপুট দিবেঃ

[9, 8, 7, 6, 5, 4, 3, 2, 1]

আমরা চাইলে যে কোন কিছুই সর্ট করতে পারি। যেমনঃ

alphabet = ['c', 'b', 'a', 'd', 'f', 'e']
alphabet.sort()
print(alfabet)

কারো নামও বর্ণমালা অনুযায়ী আমরা সাজিয়ে নিতে পারিঃ

friends = ['Shuvo', 'Tuhin', 'Tanvir', 'Dipu', 'Siyam']
friends.sort()
print(friends)

যা আউটপুট দিবেঃ

['Dipu', 'Shuvo', 'Siyam', 'Tanvir', ‘Tuhin']

নিম্নক্রমে সাজাতে চাইলেঃ

friends = ['Shuvo', 'Tuhin', 'Tanvir', 'Dipu', 'Siyam']
friends.sort(reverse=True)
print(friends)

যা আউটপুট দিবেঃ

['Tuhin', 'Tanvir', 'Siyam', 'Shuvo', 'Dipu']

লিস্ট থেকে সব আইটেম মুছে ফেলা

কোন লিস্টের সব গুলো আইটেম মুছে ফেলার জন্য clear মেথড ব্যবহার করা হয়। উদাহরণঃ

numbers = [4,6,1,3,8,5,7,9,2]
numbers.clear()
print(numbers)

আউটপুট হিসেবে আমরা একটা শূন্য লিস্ট পাবো। আর যেটা হচ্ছে দুইটা স্কয়ার ব্র্যাকেট []।

উল্টো করে সাজানো

লিস্টের আইটেম গুলো উল্টো করে সাজাতে reverse() মেথড ব্যবহার করা হয়। যেমনঃ

numbers = [4,6,1,3,8,5,7,9,2]
numbers.reverse()
print(numbers)

যা আউটপুট দিবেঃ

[2, 9, 7, 5, 8, 3, 1, 6, 4]

একের অধিক লিস্ট একত্র করা

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

numbers = [4,6,1,3,8,5,7,9,2]
alphabet = ['c', 'b', 'a', 'd', 'f', 'e']
new_list = numbers + alphabet
print(new_list)

যা আউটপুট দিবেঃ

[4, 6, 1, 3, 8, 5, 7, 9, 2, 'c', 'b', 'a', 'd', 'f', 'e']

‘লিস্ট’ নিয়ে এ অধ্যায় আমরা অনেক কিছু শিখেছি। এগুলো পরবর্তী অধ্যায়ে অন্যান্য বিষয় গুলো শিখতে কাজে লাগবে। তাই পরের অধ্যায় যাওয়ার আগে কিভাবে লিস্টের বিভিন্ন অপারেশন করা যায়, তা ভালো করে শিখে নিতে হবে।

9 thoughts on “পাইথন – list”

  1. আচ্ছা, .clear() ফাংশনটি কি Paython 3.x এর কি? আমার পিসিতে পাইথন ২.৭ ইনস্টল করা আছে, এইখানে এই কোড রান করালে বলছে, AttributeError: ‘list’ object has no attribute ‘clear’ কিন্তু সেইম কোড যখন অনলাইনে কোন পাইথন থ্রি আইডিতে রান করছি তখন ঠিকমত আউটপুট পাচ্ছে।

    Reply
    • জ্বি, পাইথন 3.x এর জন্য। এখানের সব গুলো লেখাই 3.x এর জন্য।

  2. এতকিছু এত সুন্দরভাবে কেউ কখনও বুঝাতে পারে বলে জানা ছিল না। উধাহরন গুলা খুব সুন্দর হয়েছে। এন্ড লিখার সিস্টেম টাও খুব গুছানো। অনেক মজায় শিখেছি এই টিউটোরিয়াল টা। many many thnx “JAKIR” vayya
    btw
    clear Attribute amar compiler e support korse na,
    ami hukus pakus er compiler use kori
    http://hukush-pakush.com/compiler.html
    code likhle erokom dekhasse
    AttributeError: ‘list’ object has no attribute ‘clear’

    Reply
  3. আর একটা ব্যাপার,print এ কখনো round bracket ব্যবহার করেছেন।আবার কখনো করেননি। তো কখন করবো বা করা উচিত?? এবং করলে লাভ কি আর না করলে ক্ষতি কি?? প্লিজ একটু জানাবেন।

    Reply
    • sublime text e shobshomoy () bebohar korte hoi print option er pore. Nahole print option amader kono output dibena. Ami sublime text er () chara print use koresi kintu kono utput paine.

  4. জাকির ভাই সরকারি ওয়েব সাইটে একটা অপশন আছে, বিভাগ সিলেক্ট করলে জেলার বক্সে ঐ বিভাগের সবগুলো জেলার নাম চলে আসে,আবার জেলা সিলেক্ট করলে, উপজেলার বক্সে ঐ জেলার সবগুলো উপজেলার নাম চলে আসে।
    আমি এটি কিভাবে করব অনুগ্রহ করে জানাবেন।

    Reply
    • এই জিনিসটা কয়েক ভাবেই করা যায়। বিভাগ, জেলা, উপজেলা এসব গুলো আলাদা আলাদা লিস্টে রেখে। ভালো হয় CSV বা ডেটাবেজ ফাইল ব্যবহার করলে। এখানে এরা যেভাবে ইমপ্লিমেন্ট করেছে, তা দেখতে আইডিয়া পাবেনঃ https://github.com/dr5hn/countries-states-cities-database

  5. আপনার লেখার হাত অসাধারণ!
    এতো সুন্দর এবং ডেটাইলসীব টিউটোরিয়াল আমি এর আগে পড়িনি।
    আল্লাহ আপনার নেক হায়াৎ দেন করুক।

    Reply

Leave a Reply