লিখেছেন: কাজী মুশফিকুর রহমান || সফটওয়্যার প্রকৌশলী, টেকনিয়াস (সফটওয়্যার নির্মাণ প্রতিষ্ঠান) || তারিখঃ 21 নভে., 2024
একটি ইটারেবল অব্জেক্ট অথবা সিকোয়েন্স (যেমন: লিস্ট, টুপল, সেট, ডিকশেনারী, স্ট্রিং ইত্যাদি) কে ট্রাভার্স করতে ফর লুপ ব্যবহৃত হয়। ট্রাভার্স এর অর্থ হচ্ছে ইটারেবল অবজেক্ট এর প্রতিটি আইটেম নিয়ে কাজ করা। এর মাধ্যমে খুব সহজে অল্প কোড ব্যবহার করে অনেকগুলো স্টেটমেন্ট এক্সিকিউট করা যায়। কোডের লাইন সংখ্যা কমে যাওয়ার কারণে ‘টাইম কমপ্লেক্সিটি’ এবং ‘স্পেস কমপ্লেক্সিটি’ কমে যায়। অর্থাৎ মেমোরিতে কম জায়গা নেয় এবং কোড রান করতে তুলনামূলক কম সময় লাগে। কোডের মাধ্যমে প্রোগ্রামার একটি লুপ ডিফাইন করে দেয়। যতক্ষণ পর্যন্ত লুপটি চলতে থাকে, ততক্ষন এর ভেতরের স্টেটমেন্ট এক্সিকিউট হতে থাকে, এটি শেষ হলে এক্সিকিউশনও বন্ধ হয়ে যায়। ডেভেলপাররা রিপিটেড কোড স্কিপ করতে এর ব্যবহার করে থাকে, এবং রিয়েল লাইফ প্রজেক্টে এর এপ্লিকেশন চোখে পড়ার মত। এটি অন্যান্য প্রোগ্রামিং ল্যাঙ্গুয়েজের ইটারেটরের মতো কাজ করে।
এখন আমি যদি 1 থেকে 5 পর্যন্ত পাঁচটি সংখ্যা প্রিন্ট করতে চাই তাহলে নিচের মত কোড লিখব।
কোড:
print(1)
print(2)
print(3)
print(4)
print(5)
আউটপুট:
1
2
3
4
5
লক্ষ্য করুন, এখানে পাঁচটি সংখ্যা প্রিন্ট করতে পাঁচ লাইন কোড লিখতে হয়েছে, এটা পাইথনে কোড লিখার কোন কনভিনিয়েন্ট পদ্ধতি নয়। আমরা যদি নাম্বারগুলো একটি লিস্ট [1, 2, 3, 4, 5] এর মধ্যে নিয়ে তার উপর ফর লুপ চালিয়ে দেয় তাহলে এ কাজটি অতি সহজে হয়ে যাবে, এবং কোডের লাইন সংখ্যাও কমে যাবে।
এখন আমি ফর লুপ ব্যবহার করে 1 থেকে 5 পর্যন্ত পাঁচটি সংখ্যা প্রিন্ট করব।
কোড:
for number in [1, 2, 3, 4, 5]:
print(number)
আউটপুট:
1
2
3
4
5
উপরের কোডটি range() ফাংশন ইউজ করেও লিখা যায়, পরবর্তীতে আমরা এর ব্যবহার দেখব।
উপরের কোডের ব্যাখ্যা নিচের চিত্রে দেয়া হল:
for number in [1, 2, 3, 4, 5]: , এখানে ‘[1, 2, 3, 4, 5]’ নাম্বারের একটি লিস্ট, এর অর্থ হলো: লিস্ট থেকে প্রতিবারে একটি করে নাম্বার, number নামক ভ্যারিয়েবলের মধ্যে জমা হবে। তখন এর ভ্যালু হবে ৫ টি, যথাক্রমে: number = 1, number = 2, number = 3, number = 4, এবং number = 5। এবং প্রত্যেকবারে একটি করে মোট ৫ টি নাম্বার প্রিন্ট হবে। আমরা লক্ষ্য করেছি যে, ৫ টি নাম্বার প্রিন্ট করতে লুপটি ৫ বার চলেছে (ঘুরেছে),যার প্রতিটি ঘুর্ণনকে একটি ইটারেশন (iteration) বলা হয়। সুতরাং এক্ষেত্রে ইটারেশন সংখ্যা ৫।
তাহলে number = 1 হচ্ছে ফার্স্ট ইটারেশন,
number = 2, সেকেন্ড ইটারেশন,
number = 3, থার্ড ইটারেশন,
number = 4, ফোর্থ ইটারেশন,
এবং number = 5, ফিফ্থ ইটারেশন।
তাই আমরা উপরের লিস্ট [1, 2, 3, 4, 5] কে ইটারেবল অবজেক্ট বলতে পারি, কারণ এর উপর ইটারেশন চলতে পারে। উপরে কোডের এক্সিকিউশন চিত্রের মাধ্যমে দেখানো হল:
প্রথমে for কিওয়ার্ড, তারপর ভ্যারিয়েবলের (ইটারেটরের) নাম, তারপর in কিওয়ার্ড, তারপর ইটারেবল অবজেক্ট (সিকোয়েন্স), তারপর কোলন ‘ : ’। এরপর পরের লাইনে স্টেটমেন্ট উল্লেখ করতে হবে। ইটারেটরটি প্রত্যেক ইটারেশনে সিকোয়েন্সের আইটেমের ভ্যালু গ্রহণ করে। সিকোয়েন্সের শেষ আইটেম পর্যন্ত লুপ চলতে থাকে, এবং এর বডি ইন্ডেন্টেশন দিয়ে শুরু হয়। এই লুপটি for দিয়ে শুরু হয় বলে একে for loop বলে।
উদাহরণ:
animals = [ 'Tiger', 'Lion', 'Sheep', 'Bear' ]
for life in animals:
print(life)
উপরের কোডের প্রথম লাইনে আমি প্রাণীদের একটি লিস্ট, [ 'Tiger', 'Lion', 'Sheep', 'Bear' ] তৈরী করেছি এবং এটি animals নামক ভ্যারিয়েবলের মধ্যে এসাইন করেছি। এই লিস্টকে আমরা ইটারেবল অব্জেক্ট অথবা সিকোয়েন্স বলতে পারি, যেখানে চারটি আইটেম বা উপাদান রয়েছে। দ্বিতীয় লাইনে লিস্টের উপরে একটি ফর লুপ চালিয়েছি। এই লুপটি চারবার চলবে এবং প্রত্যেকবারে animals লিস্ট থেকে একটি করে আইটেম life নামক ভ্যারিয়েবলের (ইটারেটরের) মধ্যে স্টোর হবে। এরপর পরের লাইনে (তৃতীয় লাইনে) প্রতিবারে একটি করে আইটেম প্রিন্ট হবে। এখন কোডটি রান করলে নিচের মত আউটপুট পাব।
আউটপুট:
Tiger
Lion
Sheep
Bear
0