1.2.36 · D1 · HinglishIntroduction to Programming (Python)

FoundationsGenerator expressions — memory efficiency

1,785 words8 min read↑ Read in English

1.2.36 · D1 · Coding › Introduction to Programming (Python) › Generator expressions — memory efficiency

Pehle aapko parent note ke us claim par trust karna hoga ki ek generator memory use karta hai jabki list — lekin uske liye aapko har symbol aur word ki proper samajh honi chahiye. Hum inhe ek dusre pe depend karne wale order mein bilkul scratch se build karenge. Koi cheez define hone se pehle use nahi ki jaayegi.


1. Item kya hota hai? (sab kuch ka atom)

Ek plate par ek sandwich imagine karo. Woh ek sandwich ek item hai. Jab hum baad mein "ek item ek time" bolein, toh matlab hai bilkul ek plate aapke haath mein.

Figure — Generator expressions — memory efficiency

Topic ko iska zaroorat kyun hai: puri memory wali argument yeh hai ki "kitne items ek hi moment mein exist karte hain". Toh "item" woh unit hai jise hum count karenge.


2. Collection / Sequence kya hota hai?

Ek table par plates ka poora stack imagine karo. Har plate ek item hai (section 1); stack hi collection hai. Is poore topic ka key question yeh hai:

Kya saari plates table par ek saath rakhni padti hain, ya hum inhe ek ek karke serve kar sakte hain?

Ek list "saari plates table par" wala jawab hai. Ek generator "ek plate ek time" wala jawab hai.


3. Letter — "kitne"

Number ki jagah letter kyun? Kyunki hum ek aisa statement chahte hain jo har size ke liye sach ho. likhne se hum keh sakte hain "chahe stack kitna bhi bada ho jaaye…". Stack ko aur aur oocha hote imagine karo — uski height hai.

Hum ko ke andar phir milenge, toh ise abhi lock kar lo: = items ki count.


4. Memory — kitchen nahi, desk

Do desks side by side imagine karo.

  • Left desk (ek list): saari plates ek saath uski par stack hain. Bada stack → badi desk chahiye.
  • Right desk (ek generator): kisi bhi moment mein bilkul ek plate, plus ek chhoti sticky-note jis par likha hai "agla plate kaise banana hai".
Figure — Generator expressions — memory efficiency

Topic ko iska zaroorat kyun hai: "memory efficiency" literally aapko kitni desk space chahiye hai. Sticky-note crucial trick hai — aage padho.

Python actually is desk space ko kaise allocate karta hai, yeh Memory management in Python mein dekho.


5. Recipe (state) — sticky-note

ke liye sticky-note bas do cheezein hold karti hai: "maine aakhri kab use kiya" aur "rule: usse square karo, phir ko ek se badhao". Woh note same size rehti hai chahe sequence 5 items ki ho ya 5 billion ki — yeh kabhi items list nahi karta, sirf agla item kaise milega yeh batata hai.

Yeh Lazy evaluation ka core hai: koi value compute karo sirf tab jab actually maanga jaaye, pehle nahi.


6. Iterate / on demand / ek ek karke yield karna

Ek "NEXT" button dabaane ki imagine karo. Har press par: current plate haath se jaati hai, recipe agla plate banati hai, aur woh aapke haath mein aa jaati hai. Aap kabhi bhi do nahi pakde rehte.

Figure — Generator expressions — memory efficiency

NEXT button ke peeche ka mechanism iterator protocol hai — Iterators and the iterator protocol dekho. def/yield ka sibling jo same tarah se values produce karta hai, woh Generator functions and yield mein cover hai.


7. Exhausted — button kaam karna band kar deta hai

Aakhri page ke baad printer imagine karo: NEXT press karo aur woh bas click karta hai, khaali. Yahi wajah hai ki parent note warn karta hai ki aap generator ko do baar loop nahi kar sakte. Jo plates aapne kha li woh gayi; dobara khaane ke liye aapko nayi recipe likhni hogi.


8. Big-O: aur — desk kaise badhti hai yeh measure karna

Ab symbols aur . Yeh describe karte hain ki jaise badhta hai desk space kaise change hoti hai, fixed clutter ignore karke.

Do lines ko graph par imagine karo jaise badhta hai:

Figure — Generator expressions — memory efficiency

Generator ke liye "1" kyun? Kyunki "ek plate + ek sticky-note" ek fixed amount hai jo par depend nahi karta. Big-O mein hum kisi bhi fixed amount ko kehte hain — literally "constant 1 ki tarah badhta hai". Zyada detail Big-O space complexity mein hai.


9. Syntax symbols: () vs [] aur andar ke pieces

Woh single-character swap section 4 ki do desks ke beech ka fark hai.


Prerequisite map

Item = one value

Collection = many items in order

n = how many items

Memory = the desk right now

Recipe / state = tiny sticky note

Iterate = press NEXT one at a time

On demand = made only when asked

Exhausted = NEXT stops working

Big-O = how desk grows with n

Parens vs brackets

Generator expression memory efficiency


Equipment checklist

Parent note ke liye aap ready hain agar aap inhe out loud answer kar sako:

Ek item hota hai
ek single value — sabse chhoti cheez jo hum count karte hain (ek sandwich / ek plate).
Symbol ka matlab hai
ek collection mein items ki ginaati.
Memory ko yahan best picture kiya jaata hai
desk surface ki tarah — sirf jo abhi hold ho raha hai woh count hota hai.
Generator ki recipe (state) store karti hai
hum kahan hain + agla item banane ka rule — ek fixed-size sticky-note, items nahi.
Iterate karne ka matlab hai
items ko ek ek karke maangna, agla tabhi jab current khatam ho.
On demand / lazy ka matlab hai
ek value sirf us waqt compute hoti hai jab maangi jaaye, kabhi pehle se nahi.
Ek generator exhausted ho jaata hai jab
aap NEXT ko last item se aage press karo; aage press karne par kuch nahi milta.
memory describe karta hai jo
items ki ginaati ke proportion mein badhti hai — double, space double.
memory describe karta hai jo
chahe kuch bhi ho, constant rehti hai.
List comprehension aur generator expression mein ek-character difference hai
[] square brackets ki jagah () parentheses.

Ab parent topic par jao.