Comjagat.com-The first IT magazine in Bangladesh
  • ভাষা:
  • English
  • বাংলা
হোম > পাইথন লিস্ট ও ফাংশন
লেখক পরিচিতি
লেখকের নাম: মৃণাল কান্তি রায় দীপ
মোট লেখা:৫
লেখা সম্পর্কিত
পাবলিশ:
২০১৩ - মার্চ
তথ্যসূত্র:
কমপিউটার জগৎ
লেখার ধরণ:
প্রোগ্রাম
তথ্যসূত্র:
প্রোগ্রামিং
ভাষা:
বাংলা
স্বত্ত্ব:
কমপিউটার জগৎ
পাইথন লিস্ট ও ফাংশন
পাইথনের চমৎকার ফিচারগুলোর মধ্যে অন্যতম হলো লিস্টের ব্যবহার। লিস্ট প্রোগ্রামিংয়ের একটি গুরুত্বপূর্ণ বিষয়। লিস্ট শব্দের বাংলা অর্থ তালিকা। আমাদের বোধহয় ব্যাখ্যা করার দরকার পড়ে না তালিকা কী জিনিস। পাইথনেও লিস্ট একই কাজ করে। সহজ কথায় লিস্ট হলো কতগুলো আইটেমের একটি তালিকা। অনেক প্রোগ্রামিং ল্যাঙ্গুয়েজে লিস্ট ডিক্লেয়ার করার সময় বলে দিতে হয় লিস্টের আইটেমগুলোর টাইপ কি হবে, পাইথনে তার দরকার পড়ে না। একটি লিস্টের আইটেমগুলো বিভিন্ন টাইপের হতে পারে।
কিভাবে লিস্ট ডিক্লেয়ার করব। থার্ড ব্রাকেটের ভেতরে কমা দিয়ে একেকটি আইটেম সেপারেট করে দিলেই লিস্ট তৈরি হয়ে যাবে। উদাহরণ :
my_list = [১,"a string",৪৫.৫৬]
print my_list[০]
print my_list[১]
print my_list[২]
print my_list
print type (my_list[০])
print type (my_list[১])
print type (my_list[২])
প্রথমে কোডগুলো মনোযোগ দিয়ে পড়ুন। বোঝার চেষ্টা করুন এর আউটপুট কী হতে পারে।
বরাবরের মতো একটি পাইথন ফাইলে এই কোডগুলো লিখে রান করে দেখুন কী আউটপুট দেখায়। type () ফাংশনটির ব্যবহার আমরা আগেই দেখেছি। আউটপুট দেখে মিলিয়ে নিন আপনি কী আশা করেছিলেন আউটপুট হিসেবে, আর কী এসেছে আউটপুটে। যদি না মিলে বোঝার চেষ্টা করম্নন কোথায় বুঝতে পারেননি।
এই কোড থেকে আমরা কী কী দেখলাম :
* কিভাবে লিস্ট ডিক্লেয়ার করতে হয়।
* লিস্টের আইটেমগুলোর একটি ইনডেক্স ভ্যালু থাকে। এই ইনডেক্স ভ্যালু ব্যবহার করে আমরা হ-তম আইটেমের মান বের করতে পারি।
* এই ভ্যালুর মান ০ থেকে শুরু হয়। অর্থাৎ প্রথম আইটেমের ইনডেক্স ০, দ্বিতীয়টির ১, এভাবে হ-তম আইটেমের ইনডেক্স (হ-১) লিস্ট সম্পর্কে আরও জানার আগে আমরা () ফাংশনটির ব্যবহার দেখে নেই। এই ফাংশনটির একটি উদাহরণ :
print range (০,১০)
print range (০, ১০০, ১০)
* এই ফাংশনটি সংখ্যার লিস্ট তৈরি করে। এর সিগনেচার অনেকটা এরকম : range (min, max, step)। এখানে সরহ হলো ন্যূনতম ভ্যালু যেটা থেকে লিস্ট শুরু হবে। সধী হলো সর্বোচ্চ ভ্যালু যার ঠিক আগের ভ্যালু পর্যন্ত লিস্ট তৈরি হবে। step হলো মধ্যবর্তী ব্যবধান।
* উপরোল্লিখিত কোড রান করালে প্রথমে আমরা পাব ০ থেকে শুরু করে ১০-এর ঠিক আগের ভ্যালু অর্থাৎ ৯ পর্যন্ত। যদি step না দেয়া হয় তাহলে পাইথন এর ভ্যালু ১ ধরে নেয়। দ্বিতীয়বার আমরা step হিসেবে ১০ দিয়েছি। তাই এবার আমরা ০ থেকে শুরু করে প্রতি ১০ ঘর পরপর সংখ্যার লিস্ট পাব ৯০ পর্যন্ত।
* লিস্ট প্র্যাকটিস করার জন্য range () ফাংশনটি ব্যবহার করে দ্রুত লিস্ট তৈরি করুন নেব। আসুন ফেরা যাক লিস্টে। আমরা দেখেছি কিভাবে ইনডেক্স ব্যবহার করে আমরা লিস্টের আইটেমগুলো অ্যাক্সেস করেছি। ধরুন আমাদের লিস্টের সব ডাটা লাগবে না, আমরা একটি নির্দিষ্ট রেঞ্জ নিয়ে কাজ করতে চাই। পাইথন আমাদের সেই সুবিধা দেয় (যা অন্য অনেক ল্যাঙ্গুয়েজে পাওয়া যায় না)। আসুন দেখি কিভাবে :
এই উদাহরণটি নিজেরা চেষ্টা করার জন্য প্রথমেই একটি লিস্ট তৈরি করে নেই।
sl = range(১,১১) # অ list containing the integers from ১ to ১০
আসুন এবার লিস্ট নিয়ে নড়াচড়া করা যাক:
list1to5 = sl[0:5]
print list1to5
list2to7 = sl[1:7]
print list2to7
এই কোড রান করালে দেখা যাবে list১to৫ একটি লিস্ট, যার ভ্যালু ১ থেকে ৫। sl[০:৫] বলতে বোঝানো হয় নামের লিস্টের ০-তম আইটেম থেকে শুরম্ন করে ৫-তম আইটেমের আগের আইটেম পর্যমত্ম আইটেমগুলো নিয়ে তৈরি একটি লিস্ট। এবার নিজে নিজেই বোঝার চেষ্টা করুন list২to৭-এর ভ্যালু কি হতে পারে এবং কেন।
এবার নিজে কিছু কাজ করুন :
৩ থেকে ৯ পর্যন্ত লিস্ট বোঝাতে আমরা কি লিখব?
sl[:৫]-এর ভ্যালু কত হবে?
sl[৪:]-এর ভ্যালু কত হবে?
sl[:]-এর ভ্যালু কত হবে? কেন?
আমরা range ফাংশনে step-এর ব্যবহার দেখেছিলাম। লিস্টের ক্ষেত্রেও step ব্যবহার করা যায়। যেমন :
print sl[০:১০:২]
print sl[০:৯:৩]
অর্থাৎ শেষে আরেকটি কোলন দিয়ে আমরা step ভ্যালুটি নির্দেশ করে থাকি। তাই প্রথম ক্ষেত্রে আমরা ০-তম আইটেম থেকে শুরু করে ২টি আইটেম বাদ দিয়ে দিয়ে ১০-তম আইটেমের আগের আইটেম পর্যন্ত যে আইটেগুলো আছে সেগুলোর লিস্ট পাব। নিজে নিজে বোঝার চেষ্টা করি দ্বিতীয় ক্ষেত্রে কি ঘটছে।
যেকোনো ভ্যালুর আগে মাইনাস চিহ্ন দিলে তার অবস্থান বিপরীত দিক থেকে বিবেচনা করা হয়। তাই শেষ দিক থেকে ৫-তম আইটেমের ভ্যালু হবে sl[-৫]। এভাবে শেষ দিক থেকে ২-তম আইটেমের আগ পর্যমত্ম আইটেমগুলোর লিস্ট পাব : sl[:-২]। step। এর ভ্যালু নেগেটিভ হলে গণনা উল্টোদিকে হবে। যেমন শেষ দিক থেকে ২-তম আইটেমের আগের আইটেম থেকে শুরু করে ৩-তম আইটেম পর্যন্ত আইটেমগুলো ২ ধাপ করে পেছালে আমরা যে লিস্টটি পাব তার জন্য আমাদেরকে লিখতে হবে : sl[-২:৩:-২]
এভাবে নিজেরা ইচ্ছেমতো লিস্ট তৈরি করে তার বিভিন্ন অংশ আলাদা করার চেষ্টা করি। প্রথমবার দেখে লিস্টের সিনট্যাক্স খুব জটিল মনে হতে পারে। কিন্তু কিছুদিন অনুশীলন করলেই ঠিক হয়ে যাবে।
পাইথনে ফাংশন
আমাদের প্রোগ্রামের যে অংশগুলো বারবার আসে সেগুলোকে আমরা পুনরায় ব্যবহারযোগ্য একক (reusable unit) হিসেবে ব্যবহার করতে পারি ফাংশনের সাহায্যে। গণিতে যেমন দেখেছি কোনো ফাংশন একটি ইনপুট নিয়ে সেটার ওপর বিভিন্ন ধরনের ম্যাথ করে আউটপুট দেয়, প্রোগ্রামিংয়েও সেই একই ব্যাপার ঘটে। আপনি এক বা একাধিক প্যারামিটার পাস করবেন একটি ফাংশনে, ফাংশনটি প্রসেস করে আপনাকে আউটপুট রিটার্ন করবে। তবে প্রোগ্রামিংয়ের ক্ষেত্রে সবসময় যে ইনপুট থাকতে হবে বা আউটপুট দিতে হবে এমন কোনো কথা নেই।
একটি ফাংশন আসলে কিছু স্টেটমেন্টের সঙ্কলন। যখনই কোনো ফাংশন কল করা হয়, তখন এই ফাংশনের ভেতরে থাকা স্টেটমেন্টগুলো এক্সিকিউট করা হয়। পাইথনে আমরা ফাংশন ডিক্লেয়ার করার জন্য ফবভ কিওয়ার্ডটি ব্যবহার করি। আসুন দেখে নিই একটি ফাংশন :
def hello():
print "Hello World!"
return 0
প্রথমে আমরা ফবভ কিওয়ার্ডটি লিখেছি। তারপর ফাংশনের নাম ‘‘যবষষড়’’ এবং তারপর ()। যদি আমরা ফাংশনটিতে কোনো ইনপুট দিতে চাই সে ক্ষেত্রে প্যারামিটারগুলো এই ()-এর মধ্যে কমা দিয়ে আলাদা করে লিখতে হবে। আমরা দেখতে পাচ্ছি, এই ফাংশনে আমরা কোনো ইনপুট দিচ্ছি না। ফাংশনটি ‘‘Hello world!’’ প্রিন্ট করবে। সি প্রোগ্রামিংয়ের সাথে মিল রেখে (এবং রিটার্ন স্টেটমেন্টের ব্যবহার দেখানোর জন্য) আমরা ০ রিটার্ন করছি। আসলে এই স্টেটমেন্টের কোনো দরকার ছিল না।
এবার আসুন দেখা যাক পাইথনে কিভাবে আমরা ফাংশন প্যারামিটার পাস করব।
def sayHello (name):
print "Hello, "+name+" !"
এই ফাংশনটিকে কল করুন এভাবে : sayHello (‘‘Computer Jagat’’)
রান শেষে ‘‘Hello Computer Jagat’’ লেখা দেখতে পারবেন। অর্থাৎ sayHello-এর পর ‘‘’’-এর মধ্যে যা বসাবেন তাকে কল করবে।
ফিডব্যাক : mkrdip@yahoo.com
পত্রিকায় লেখাটির পাতাগুলো
লেখাটি পিডিএফ ফর্মেটে ডাউনলোড করুন
লেখাটির সহায়ক ভিডিও
চলতি সংখ্যার হাইলাইটস