পাইথনে জেনারেটর কী কী এবং সেগুলি কীভাবে ব্যবহার করবেন?



সুবিধাগুলির পাশাপাশি পাইথনে জেনারেটরগুলি কী তা শিখুন। এছাড়াও বিভিন্ন ব্যবহারের ক্ষেত্রে তাদের কীভাবে তৈরি এবং ব্যবহার করতে হয় তা শিখুন।

পুনরাবৃত্ত বা বস্তু তৈরি করা যা তাদের উপরে পদক্ষেপের অনুমতি দেয় এটি একটি ভারী কাজ বলে মনে করা হয়। কিন্তু , এই বেদনাদায়ক কাজটির বাস্তবায়নটি সত্যিই মসৃণ হয়। সুতরাং আসুন এগিয়ে যাওয়া যাক এবং পাইথনের জেনারেটরগুলি ঘনিষ্ঠভাবে দেখুন।

এই নিবন্ধে আচ্ছাদিত সমস্ত বিষয়ের একটি তালিকা এখানে রয়েছে:





সুতরাং শুরু করা যাক। :)

পাইথনে জেনারেটর কী?

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



জেনারেটর ব্যবহারের সুবিধা

  • পাইথনে জেনারেটর ছাড়াই পুনরাবৃত্তিযোগ্য উত্পাদন করা অত্যন্ত কঠিন এবং দীর্ঘ।

  • জেনারেটরগুলি কার্যকরভাবে কার্যকর হওয়ায় তারা স্বয়ংক্রিয়ভাবে___ __ (), __next __ () এবং স্টপ ইন্টিগ্রেশন প্রয়োগ করে যা অন্যথায়, স্পষ্টভাবে নির্দিষ্ট করা দরকার।



  • আইটেমগুলি প্রয়োজনীয় হিসাবে উত্পাদিত হওয়ার সাথে মেমোরি সংরক্ষণ করা হয়, স্বাভাবিকের বিপরীতে । আপনার যখন বিপুল সংখ্যক পুনরুক্তি তৈরি করার দরকার হয় তখন এই সত্যটি খুব গুরুত্বপূর্ণ হয়ে ওঠে। এটি জেনারেটরগুলির বৃহত্তম সুবিধা হিসাবেও বিবেচিত হয়।

  • অসীম সংখ্যক আইটেম উত্পাদন করতে ব্যবহার করা যেতে পারে।

  • এগুলি বেশ কয়েকটি অপারেশন পাইপলাইনে ব্যবহৃত হতে পারে

জেনারেটরের ক্রিয়াকলাপ বনাম সাধারণ ফাংশন:

পাইথনের জেনারেটর যেমন তৈরি হয় ঠিক তেমনই তৈরি করা হয় ‘ডিফ’ কীওয়ার্ড ব্যবহার করে। তবে, জেনারেটরের ফাংশনগুলি রিটার্নের পরিবর্তে ফলন কীওয়ার্ডটি ব্যবহার করে। এটি অনুবাদককে অবহিত করার জন্য এটি করা হয় যে এটি একটি পুনরাবৃত্তিকারী। কেবল এটিই নয়, জেনারেটর ফাংশনগুলি চালিত হয় যখন পরবর্তী () ফাংশনটি কল করা হয় এবং সাধারণ ফাংশনের ক্ষেত্রে তাদের নামে নয়। এটি আরও ভালভাবে বুঝতে নীচের উদাহরণটি বিবেচনা করুন:

উদাহরণ:

ডিএফ ফানক (এ): একটি ফলন করুন a = [1,2,3] বি = ফানক (ক) পরবর্তী (খ)

আউটপুট: [১, ২, ৩]

আপনি দেখতে পাচ্ছেন যে উপরের আউটপুটে, ফানক () ফলন কীওয়ার্ড এবং এর কার্য সম্পাদনের জন্য পরবর্তী ফাংশনটি ব্যবহার করছে। তবে, সাধারণ ক্রিয়াকলাপের জন্য আপনার নীচের কোডটির কয়েকটি অংশের প্রয়োজন হবে:

উদাহরণ:

ডিএফ ফানক (এ): a = [1,2,3] ফানক (এ) ফিরিয়ে দিন

আউটপুট: [১, ২, ৩]

আপনি যদি উপরের উদাহরণটি দেখে থাকেন তবে আপনি ভাবছেন যে যখন সাধারণ ফাংশনটিও একই আউটপুট ফিরিয়ে দেয় তখন কেন জেনারেটর ফাংশন ব্যবহার করবেন। সুতরাং আসুন এবং পাইথনে জেনারেটর কীভাবে ব্যবহার করবেন তা দেখুন।

জেনারেটর ফাংশন ব্যবহার করে:

যেমনটি আগেই উল্লেখ করা হয়েছে, পাইথনের জেনারেটরগুলি একসাথে পুনরাবৃত্ত উত্পাদন করে। নিম্নলিখিত উদাহরণটি একবার দেখুন:

উদাহরণ:

ডিফ মাইফঙ্ক (এ): যখন একটি> = 3: ফলন করুন a = a + 1 বি = মাইফঙ্ক (ক) মুদ্রণ (খ) পরবর্তী (খ)

আপনি যখন নিম্নলিখিত ফাংশনটি সম্পাদন করেন, আপনি নীচের আউটপুটটি দেখতে পাবেন:

আউটপুট:

এখানে, একটি পুনরাবৃত্তিযোগ্য বস্তু কিছুক্ষণ শর্তটি সন্তুষ্ট করে ফিরিয়ে দেওয়া হয়েছে। মৃত্যুদন্ড কার্যকর হওয়ার পরে, নিয়ন্ত্রণটি কলারের কাছে স্থানান্তরিত হয়। যদি আরও আইটেমের প্রয়োজন হয় তবে একই ফাংশনটি পরবর্তী () ফাংশনটি কল করে আবার সম্পাদন করা দরকার।

পরবর্তী (খ)

আউটপুট:

পরবর্তী মৃত্যুদন্ড কার্যকর করার পরে, ফাংশনটি 6,7 ইত্যাদি ফিরে আসবে Py পাইথনের জেনারেটর ফাংশনগুলি স্বয়ংক্রিয়ভাবে_____ () এবং __next __ () পদ্ধতিগুলি প্রয়োগ করে। অতএব, আপনি কেবল পরবর্তী () পদ্ধতিটি ব্যবহার করে অবজেক্টগুলির উপর পুনরাবৃত্তি করতে পারেন। যখন আইটেম জেনারেশন সমাপ্ত করা উচিত, জেনারেটরের ফাংশনগুলি প্রয়োগ করে স্টপআইটারেশন অভ্যন্তরীণভাবে কলারকে চিন্তা না করে। এখানে এর আরেকটি উদাহরণ দেওয়া হল:

উদাহরণ:

a = 2 Def myfunc (a): যখন a> = 0: একটি ফলন করুন - = 1 বি = মাইফঙ্ক (ক) মুদ্রণ (খ) পরবর্তী (খ)

আউটপুট:

পাইথন-এডুরেকাতে স্টপআইটারেশন-জেনারেটরউপরের চিত্রটি আমাদের প্রোগ্রামের প্রয়োজনীয় সংখ্যক বার সম্পাদন দেখায়। আপনি যদি পরবর্তী ফাংশনটি আবার কল করার চেষ্টা করেন, এটি চিত্রিত করে একটি বার্তা দেয় স্টপআইটারেশন বাস্তবায়ন করা হয়েছে। আপনি যদি সাধারণ ফাংশন দিয়ে এটি করার চেষ্টা করেন তবে প্রত্যাবর্তিত মানগুলি পরিবর্তন বা পুনরাবৃত্তি হবে না। নীচের উদাহরণটি একবার দেখুন:

উদাহরণ:

Def z (): n = 1 টি ফলন n n = n + 3 ফলন n p = z () পরবর্তী (পি)

আউটপুট:

লুপ সহ জেনারেটর:

আপনি যদি একই ফাংশনটি একবারে চালাতে চান তবে আপনি ‘ফর’ লুপটি ব্যবহার করতে পারেন। এই লুপটি অবজেক্টগুলিকে পুনরাবৃত্তি করতে সহায়তা করে এবং সমস্ত প্রয়োগের পরে এটি স্টপআইটারেশন কার্যকর করে।

উদাহরণ:

ডিফ জেড (): এন = 1 ফলন এন এন = এন + 3 ফলন এন এক্স এর জন্য জেড (): মুদ্রণ (এক্স)

আউটপুট:

এক

পুনরাবৃত্তিযোগ্য বস্তু উত্পন্ন করতে আপনি এক্সপ্রেশনও নির্দিষ্ট করতে পারেন।

জেনারেটর এক্সপ্রেশন:

পুনরুক্তি উত্পাদন করতে আপনি লুপের সাথে এক্সপ্রেশনও ব্যবহার করতে পারেন। এটি সাধারণত প্রজন্মের পুনরাবৃত্তিকে অনেক সহজ করে তোলে। জেনারেটর এক্সপ্রেশন তালিকা অনুধাবন এবং মত সাদৃশ্য ল্যাম্বদা ফাংশন , জেনারেটর এক্সপ্রেশন বেনামে জেনারেটর ফাংশন তৈরি করে।

নীচের উদাহরণটি একবার দেখুন:

উদাহরণ:

a = ব্যাপ্তি ()) মুদ্রণ ('তালিকা সমঝোতা', শেষ = ':') বি = [এক্স + 2 এক্স এর জন্য একটি] মুদ্রণ (খ) মুদ্রণ ('জেনারেটর এক্সপ্রেশন', শেষ = ': এন') সি = (x + 2 এ এ এর ​​জন্য) মুদ্রণ (সি) এর জন্য সি: মুদ্রণ (y)

আউটপুট:

java system.exit (0)

তালিকা বোঝার জন্য: [2, 3, 4, 5, 6, 7]

জেনারেটর এক্সপ্রেশন:





যেমন আপনি দেখতে পাচ্ছেন, উপরের আউটপুটে, প্রথম এক্সপ্রেশনটি একটি তালিকা বোঝার যা [] বন্ধনীগুলির মধ্যে নির্দিষ্ট করা আছে specified তালিকার বোধগম্য একবারে আইটেমের সম্পূর্ণ তালিকা তৈরি করে। পরেরটি হ'ল একটি জেনারেটর এক্সপ্রেশন যা একই আইটেমগুলি দেয় কিন্তু একবারে এক করে। এটি () বন্ধনী ব্যবহার করে নির্দিষ্ট করা আছে।


জেনারেটরফাংশন এছাড়াও অন্যান্য ফাংশন মধ্যে ব্যবহার করা যেতে পারে।উদাহরণ স্বরূপ:

উদাহরণ:

a = ব্যাপ্তি ()) মুদ্রণ ('জেনারেটর এক্সপ্রেশন', শেষ = ': n') সি = (এক্স + 2 এ x এর জন্য) মুদ্রণ (সি) মুদ্রণ (মিনিট (সি))

আউটপুট:

জেনারেটর এক্সপ্রেশন

উপরের প্রোগ্রামটি ন্যূনতম মানটি মুদ্রণ করে যখন উপরের এক্সপ্রেশনটি a এর মানগুলিতে প্রয়োগ হয়।

ব্যবহারের ক্ষেত্রে:

আমাদের মধ্যে জেনারেটর ব্যবহার করুন প্রতি:

  • ফিবোনাচি সিরিজ উত্পন্ন করুন
  • নম্বর উত্পন্ন করছে

ফিবোনাচি সিরিজ উত্পন্ন হচ্ছে:

ফিবোনাচি সিরিজটি আমরা সবাই জানি যে প্রতিটি সংখ্যার পূর্ববর্তী দুটি সংখ্যার যোগফল। প্রথম দুটি সংখ্যা 0 এবং 1 হ'ল ফিবোনাচি সিরিজ উত্পন্ন করার জন্য এখানে একটি জেনারেটর প্রোগ্রাম রয়েছে:

উদাহরণ:

ডিফ ফাইবো (): প্রথম, দ্বিতীয় = 0,1 যখন সত্য: প্রথম প্রথম, দ্বিতীয় = দ্বিতীয়, প্রথম + সেকেন্ডে ফাইবোতে এক্স (): যদি x> 50: ব্রেক প্রিন্ট (x, শেষ = '')

আউটপুট:

0 1 1 2 3 5 8 13 21 34

উপরের আউটপুট 50 টিরও কম মান সহ ফিবোনাচি সিরিজটি দেখায় now এখন সংখ্যার একটি তালিকা কীভাবে তৈরি করা যায় তা একবার দেখে নেওয়া যাক।

উত্পন্ন নম্বর:

আপনি যদি নির্দিষ্ট তালিকা নম্বর উত্পন্ন করতে চান তবে আপনি জেনারেটর ফাংশন ব্যবহার করে এটি করতে পারেন। নিম্নলিখিত উদাহরণটি একবার দেখুন:

উদাহরণ:

a = ব্যাপ্তি (10) খ = (এক্স এর জন্য x এর জন্য) মুদ্রণ (খ) y এর জন্য খ: মুদ্রণ (y)

আউটপুট:

0
এক





7
8
9

উদাহরণ:

a = ব্যাপ্তি (2,10,2) বি = (এক্স এর জন্য x এর জন্য) মুদ্রণ (খ) y এর জন্য খ: মুদ্রণ (y)

আউটপুট:





8

উপরের প্রোগ্রামটি 2 থেকে 10 পর্যন্ত সমান সংখ্যা ফিরে পেয়েছে has এটি পাইথনের জেনারেটর সম্পর্কিত এই নিবন্ধের শেষের দিকে নিয়ে আসে। আমি আশা করি আপনি সমস্ত বিষয় বুঝতে পেরেছেন।

আপনি যথাসম্ভব অনুশীলন করুন এবং আপনার অভিজ্ঞতাটি ফিরিয়ে দিন তা নিশ্চিত করুন।

আমাদের জন্য একটি প্রশ্ন আছে? দয়া করে এই 'পাইথনে জেনারেটর' ব্লগের মন্তব্য বিভাগে এটি উল্লেখ করুন এবং আমরা যত তাড়াতাড়ি সম্ভব আপনার কাছে ফিরে আসব।

পাইথনের বিভিন্ন অ্যাপ্লিকেশন সহ গভীরতর জ্ঞান পেতে, আপনি লাইভের জন্য তালিকাভুক্ত করতে পারেন 24/7 সমর্থন এবং আজীবন অ্যাক্সেস সহ।