ازگر میں جنریٹر کیا ہیں اور ان کا استعمال کیسے کریں؟



جانیں فوائد کے ساتھ ازگر میں جنریٹر کیا ہیں۔ نیز استعمال کے مختلف کیسوں کے ساتھ ان کو بنانے اور استعمال کرنے کا طریقہ بھی سیکھیں۔

تکرار کرنے والی اشیاء یا اشیاء پیدا کرنا جو ان پر قدم اٹھانے کی اجازت دیتے ہیں ایک بوجھل کام سمجھا جاتا ہے۔ لیکن میں ، اس تکلیف دہ کام کا نفاذ واقعی ہموار ہوجاتا ہے۔ تو آئیے ہم آگے بڑھیں اور ازگر میں جنریٹرز کو قریب سے دیکھیں۔

اس مضمون میں شامل تمام عنوانات کی فہرست یہ ہے۔





تو آئیے شروع کرتے ہیں۔ :)

ازگر میں جنریٹر کیا ہیں؟

جنریٹر بنیادی طور پر ایسے افعال ہوتے ہیں جو traversable اشیاء یا اشیاء کو لوٹاتے ہیں۔ یہ افعال ایک ساتھ میں تمام اشیاء تیار نہیں کرتے ہیں ، بلکہ وہ ایک وقت میں اور صرف اس وقت جب ایک چیز کی ضرورت ہوتی ہے ان کو تیار کرتی ہیں۔ جب بھی اشیاء کے ایک سیٹ پر تکرار کرنے کے لئے شامل کیا گیا ہے ، جنریٹر کا فنکشن چلتا ہے۔ جنریٹرز کے بھی بہت سے فوائد ہیں۔



جنریٹرز کے استعمال کے فوائد

  • ازگر میں جنریٹرز کے بغیر ، تکرار کرنے والی چیزیں تیار کرنا انتہائی مشکل اور لمبا ہے۔

  • جنریٹر آسانی سے نافذ کرنے کے ل as آسان ہوتے ہیں کیونکہ وہ خود کار طریقے سے __ لیٹر __ () ، __ اگست __ () اور اسٹاپ انٹریٹشن نافذ کرتے ہیں جو بصورت دیگر ، واضح طور پر بیان کرنے کی ضرورت ہے۔



  • میموری کو بچایا جاتا ہے کیونکہ جب ضرورت ہوتی ہے تو معمول کے برعکس اشیاء تیار ہوتی ہیں . یہ حقیقت بہت اہم ہوجاتی ہے جب آپ کو بہت بڑی تعداد میں خلل پیدا کرنے کی ضرورت ہوتی ہے۔ اس کو جنریٹرز کا سب سے بڑا فائدہ بھی سمجھا جاتا ہے۔

  • لامحدود تعداد میں اشیاء تیار کرنے کے لئے استعمال کیا جاسکتا ہے۔

  • وہ متعدد کاروائیوں کو پائپ لائن میں بھی استعمال کرسکتے ہیں

عام افعال بمقابلہ جنریٹر کے افعال:

ازگر میں جنریٹرز بالکل اسی طرح بنائے جاتے ہیں جیسے آپ بناتے ہیں 'ڈیف' کلیدی لفظ استعمال کرنا۔ لیکن ، جنریٹر کے فرائض واپسی کی ورڈ کو واپسی کے بجائے استعمال کرتے ہیں۔ یہ مترجم کو مطلع کرنے کے لئے کیا جاتا ہے کہ یہ تکرار کرنے والا ہے۔ صرف یہ نہیں ، جنریٹر کے افعال چلائے جاتے ہیں جب اگلے () فنکشن کو بلایا جاتا ہے اور نہ کہ ان کے نام سے جیسے عام افعال کی صورت میں۔ بہتر سمجھنے کے لئے مندرجہ ذیل مثال پر غور کریں:

مثال:

ڈیف فنک (ا): پیداوار a = [1،2،3] بی = فنک (ا) اگلا (بی)

آؤٹ پٹ: [1 ، 2 ، 3]

جیسا کہ آپ دیکھ سکتے ہیں ، مذکورہ آؤٹ پٹ میں ، فنک () پیداوار کے مطلوبہ الفاظ اور اس کے عمل کے ل its اگلے فنکشن کا استعمال کر رہا ہے۔ لیکن ، عام کام کے ل you آپ کو درج ذیل کوڈ کی ضرورت ہوگی۔

مثال:

Def func (a): a = [1،2،3] فنک (a) واپس کریں

آؤٹ پٹ: [1 ، 2 ، 3]

اگر آپ مذکورہ مثال کو دیکھیں تو آپ سوچ رہے ہوں گے کہ جب عام کام بھی اسی پیداوار کو لوٹ رہا ہے تو جنریٹر فنکشن کو کیوں استعمال کریں۔ تو آئیے ہم آگے بڑھتے ہیں اور دیکھتے ہیں کہ ازگر میں جنریٹرز کا استعمال کیسے کریں۔

جنریٹر کے افعال کا استعمال:

جیسا کہ پہلے ذکر کیا گیا ہے ، ازگر میں جنریٹر ایک وقت میں ایک مرتبہ دوبارہ بنانے کے قابل بناتے ہیں۔ مندرجہ ذیل مثال پر ایک نظر ڈالیں:

مثال:

Def myfunc (a): جبکہ a> = 3: حاصل کریں a = a + 1 b = myfunc (a) پرنٹ (b) اگلا (b)

جب آپ مندرجہ ذیل فنکشن کو انجام دیتے ہیں تو ، آپ کو مندرجہ ذیل آؤٹ پٹ نظر آئے گا:

system.exit (0) پروگرام کو ختم کرنے کے لئے استعمال کیا جا سکتا ہے۔

آؤٹ پٹ: 4

یہاں ایک قابل تکرار آبجیکٹ واپس کردی گئی ہے جبکہ اس حالت کو پورا کرتے ہوئے۔ عملدرآمد کے بعد ، کنٹرول کال کرنے والے کو منتقل کردیا جاتا ہے۔ اگر مزید اشیاء کی ضرورت ہو تو ، اسی فنکشن کو اگلے () فنکشن کو کال کرکے دوبارہ عمل میں لانا ضروری ہے۔

اگلا (ب)

آؤٹ پٹ: 5

مزید پھانسیوں پر ، فنکشن 6،7 وغیرہ واپس آجائے گا ، ازگر میں جنریٹر کے افعال __iter __ () اور __ اگست __ () طریقوں کو خود بخود نافذ کرتے ہیں۔ لہذا ، آپ اگلے () طریقہ کو استعمال کرکے اشیاء پر تکرار کرسکتے ہیں۔ جب آئٹم جنریشن ختم ہوجائے تو ، جنریٹر کا کام عمل میں لاتا ہے اسٹاپ ایٹریشن اندرونی طور پر فون کرنے والے کو پریشان کیے بغیر۔ اس کی ایک اور مثال یہ ہے:

مثال:

c ++ انضمام کریں کوڈ
a = 2 Def myfunc (a): جبکہ a> = 0: پیداوار a - = 1 b = myfunc (a) پرنٹ (b) اگلا (b)

آؤٹ پٹ:

ازگر ایڈورکا میں اسٹاپ انٹریکشن-جنریٹرمذکورہ بالا شبیہہ ہمارے پروگرام میں مطلوبہ وقت کی عمل درآمد کو ظاہر کرتی ہے۔ اگر آپ اگلے فنکشن کو دوبارہ کال کرنے کی کوشش کرتے ہیں تو ، اس میں ایک پیغام ملتا ہے جس میں دکھایا گیا ہے اسٹاپ ایٹریشن لاگو کیا گیا ہے۔ اگر آپ معمول کے کاموں کے ساتھ ایسا کرنے کی کوشش کرتے ہیں تو ، واپس کی گئی اقدار تبدیل نہیں ہوں گی یا پھر تکرار نہیں ہوگی۔ ذیل کی مثال پر ایک نظر ڈالیں:

مثال:

Def z (): n = 1 پیداوار n n = n + 3 پیداوار n p = z () اگلا (p)

آؤٹ پٹ:

لوپ والے جنریٹر:

اگر آپ ایک ہی فعل کو ایک ہی وقت میں انجام دینا چاہتے ہیں تو ، آپ ‘for’ لوپ کا استعمال کرسکتے ہیں۔ اس لوپ سے اشیاء پر اعادہ ہونے میں مدد ملتی ہے اور تمام نفاذ کے بعد یہ اسٹاپ ایٹریشن عمل میں لاتا ہے۔

مثال:

Def z (): n = 1 پیداوار n n = n + 3 حاصل N کے لئے x میں z (): پرنٹ (ایکس)

آؤٹ پٹ:

ایک
4

آپ تکرار کرنے والی اشیاء کو پیدا کرنے کے لئے اظہار بھی بیان کرسکتے ہیں۔

جنریٹر اظہار:

تکرار کرنے والوں کے لrators آپ لوپ کے ساتھ تاثرات بھی استعمال کرسکتے ہیں۔ یہ عام طور پر نسل کو بہت آسان بنا دیتا ہے۔ جنریٹر کا اظہار فہرست فہم اور اس سے ملتا جلتا ہے لیمبڈا افعال ، جنریٹر کے تاثرات گمنام جنریٹر افعال تخلیق کرتے ہیں۔

ذیل کی مثال پر ایک نظر ڈالیں:

مثال:

a = رینج (6) پرنٹ ('فہرست سمجھنے' ، اختتام = ':') بی = [x + 2 میں x کیلئے] ایک پرنٹ (بی) پرنٹ ('جنریٹر اظہار' ، اختتام = ': این') سی = (ایکس + میں ایکس کے لئے ایک) پرنٹ (سی) وائی کے لئے سی میں: پرنٹ (ی)

آؤٹ پٹ:

فہرست کی تفہیم: [2 ، 3 ، 4 ، 5 ، 6 ، 7]

جنریٹر اظہار:

2
3
4
5
6

جیسا کہ آپ دیکھ سکتے ہیں ، مندرجہ بالا آؤٹ پٹ میں ، پہلا اظہار ایک فہرست فہم ہے جو [] بریکٹ کے اندر مخصوص ہے۔ فہرست فہم ایک ساتھ میں اشیاء کی مکمل فہرست تیار کرتا ہے۔ اگلا ایک جنریٹر ایکسپریشن ہے جو ایک ہی وقت میں ایک ہی چیزوں کو واپس کرتا ہے۔ یہ () بریکٹ کا استعمال کرتے ہوئے بیان کیا گیا ہے۔


جنریٹرافعال دوسرے افعال کے ساتھ بھی استعمال کیا جا سکتا ہے۔مثال کے طور پر:

مثال:

a = رینج (6) پرنٹ ('جنریٹر ایکسپریشن' ، آخر = ': n') c = (x + 2 میں x) پرنٹ (c) پرنٹ (منٹ (c))

آؤٹ پٹ:

جنریٹر اظہار
2

جب مندرجہ بالا اظہار a کی اقدار پر لاگو ہوتا ہے تو مذکورہ پروگرام کم سے کم قیمت پرنٹ کرتا ہے۔

مقدمات استعمال کریں:

آئیے جنریٹرز کو استعمال کریں سے:

  • فبونیکی سیریز تیار کریں
  • نمبر تیار کرنا

فبونیکی سیریز پیدا کرنا:

جیسا کہ ہم سب جانتے ہیں فبونیکی سیریز اعداد کا ایک سلسلہ ہے جس میں ہر نمبر پچھلے دو نمبروں کا مجموعہ ہے۔ پہلے دو نمبر 0 اور 1 ہیں۔ یہ فیبونیکی سیریز تیار کرنے کے لئے جنریٹر پروگرام ہے۔

مثال:

C ++ میں کسی صف کو کس طرح ترتیب دیں
Def fibo (): پہلا ، دوسرا = 0،1 جبکہ سچ: فائبو میں ایکس کے لئے پہلا ، دوسرا = دوسرا ، پہلا + دوسرا حاصل کریں (): اگر x> 50: وقفہ پرنٹ (x ، آخر = '')

آؤٹ پٹ:

0 1 1 2 3 5 8 13 21 34

مذکورہ بالا آؤٹ پٹ فیبونیکی سیریز کو 50 سے کم اقدار کے ساتھ ظاہر کرتا ہے۔ آئیے اب ایک نظر ڈالیں کہ نمبروں کی فہرست کیسے تیار کی جائے۔

تعداد پیدا کرنا:

اگر آپ مخصوص فہرست نمبر تیار کرنا چاہتے ہیں تو ، آپ اسے جنریٹر کے افعال کا استعمال کرکے کرسکتے ہیں۔ درج ذیل مثال پر ایک نظر ڈالیں:

مثال:

a = رینج (10) b = (ایکس میں x کیلئے a) پرنٹ (b) y میں b میں: پرنٹ (y)

آؤٹ پٹ:

0
ایک
2
3
4
5
6
7
8
9

مثال:

a = رینج (2،10،2) b = (x میں x کیلئے a) پرنٹ (b) y میں b میں: پرنٹ (y)

آؤٹ پٹ:


2
4
6
8

مذکورہ پروگرام نے 2 سے 10 تک کی تعداد بھی واپس کردی ہے۔ اس سے ہمارے ازگر میں جنیریٹرز سے متعلق اس مضمون کے آخر تک پہنچ گئے ہیں۔ مجھے امید ہے کہ آپ نے تمام عنوانات کو سمجھا ہوگا۔

یقینی بنائیں کہ آپ زیادہ سے زیادہ مشق کریں اور اپنے تجربے کو پلٹائیں۔

ہمارے لئے ایک سوال ہے؟ براہ کرم اس 'ازگر میں جنریٹر' بلاگ کے تبصرے والے حصے میں اس کا ذکر کریں اور ہم جلد از جلد آپ کے پاس مل جائیں گے۔

اس کی مختلف ایپلیکیشنز کے ساتھ ازگر میں گہرائی سے آگاہی حاصل کرنے کے ل you ، آپ براہ راست داخلہ لے سکتے ہیں 24/7 کی حمایت اور زندگی بھر تک رسائی کے ساتھ۔