What is Nested Loops in Python in Hindi - पायथन मे नेस्टेड लूप क्या है?

  • Python में Nested loops का मतलब एक लूप को अन्य लूप के अंदर रखना। inner loop हर समय पूरी तरह रन होता है जबकि outer loop एक बार रन होता है। 
  • जब आप patterns, 2D lists, या tables के साथ कार्य करते है तब यह उपयोगी है। 
  • उदाहरण के लिए  rows और columns, को print करते समय outer loop, rows को कंट्रोल करता है और inner loop, columns को कंट्रोल करता है। 
  • आप nest `for` के अंदर `for` को और, `while` के अंदर `while` को nest कर सकते हैं या फिर उन्हें मिला भी सकते हैं।
  • Nested loops तब उपयोगी होते हैं जब हमें किसी कार्य को समूहों में बार-बार दोहराने की आवश्यकता होती है। 
  • हालांकि, यदि बहुत अधिक loops को एक साथ उपयोग किया जाए, तो यह प्रोग्राम को धीमा कर सकते हैं, इसलिए इनका उपयोग बहुत ही सावधानीपूर्वक करना चाहिए।"

Types of Nested Loops in Python in Hindi - पायथन में नेस्टेड लूप के प्रकार

पायथन में Nested loop के निम्न प्रकार होते हैं
1. Nested for loop
2. Nested while loop
3. for loop inside while loop
4. while loop inside for loop

Nested for loop

एक for loop, अन्य for loop के अंदर होता है तब यह एक nested for loop कहलाता है। inner loop हर समय पूरी तरह रन होता है जबकि  outer loop एक बार रन होता है।

Syntax:
for i in range(outer_limit):
    for j in range(inner_limit):
        # code block

Example:

for i in range(2):
    for j in range(3):
        print(i, j)
Output:
0 0  
0 1  
0 2  
1 0  
1 1  
1 2 

Explanation
इसका मतलब है:

Outer loop(i): 
इसमें i चलेगा 0 से 1 तक (यानि 2 बार: 0 और 1)
Inner loop(j): 
j चलेगा 0 से 2 तक (यानि 3 बार: 0, 1, 2)

अब हर बार जब i की कोई एक वैल्यू होती है, उस पर j की पूरी range चलती है।

इसलिए:
जब i = 0:
j = 0 → output: 0 0
j = 1 → output: 0 1
j = 2 → output: 0 2

जब i = 1:
j = 0 → output: 1 0
j = 1 → output: 1 1
j = 2 → output: 1 2

अब 0 तीन बार इसलिए आया क्योंकि जब i = 0 था, तब j = 0, 1, और 2 तीन बार चला। इसका मतलब print(i, j) में i = 0 तीन बार प्रिंट हुआ।

Nested while loop

एक while loop, अन्य while loop के अंदर होता है तब यह एक nested while loop कहलाता है। जब भी outer loop की condition true होती है, तब inner loop हर बार पूरी तरह से रन होगा

Syntax:
while condition1:
    while condition2:
        # code block

Example:

i = 1
while i <= 2:
    j = 1
    while j <= 3:
        print(i, j)
        j += 1
    i += 1
Output: 
1 1  
1 2  
1 3  
2 1  
2 2  
2 3


Explanation:
जब i = 1, तब j = 1, 2, 3 तीन बार चलेगा।
जब i = 2, तब भी j = 1, 2, 3 तीन बार चलेगा। क्योंकि condition true है।

Step 1:
i = 1
चूंकि i <= 2 है, loop शुरू होगा।

Step 2:
अब j = 1
चूंकि j <= 3, यह inner loop चलेगा और:
print(i, j) → Output: 1 1
फिर j = 2
Output: 1 2
फिर j = 3
Output: 1 3
अब j = 4 → inner loop बंद क्योंकि condition(j <= 3) false हो गया।

Step 3:
अब outer loop में i = 2 हो गया
फिर से inner loop शुरू होगा:
j = 1 → Output: 2 1
j = 2 → Output: 2 2
j = 3 → Output: 2 3
j = 4 → inner loop बंद

Step 4:
अब i = 3 → अब outer loop बंद क्योंकि condition(i<= 2) false हो गया।

for loop inside while loop

इसका मतलब है कि while loop के अंदर एक for loop लिखा गया है।
पहले while loop, अपने कंडीशन की जांच करता है यदि यह true, है तब for loop, पूरी तरह से क्रियान्वित होता है। और उसके बाद और फिर while loop आगे चलता रहता है।

Syntax:
while condition:
    for item in range(limit):
        # code block

Example:

i = 0
while i < 2:
    for j in range(3):
        print(i, j)
    i += 1
Output:
0 0
0 1
0 2
1 0
1 1
1 2

Explanation:
i की शुरुआत 0 से होती है।
जब तक i < 2 है, loop चलेगा।

अंदर वाला for j in range(3) → j = 0, 1, 2 तक चलेगा। हर बार i और j print होंगे। फिर i को 1 बढ़ाया जाएगा।

while loop inside for loop

इसका मतलब है कि for loop के अंदर एक while loop को रखा गया है। outer for loop, दिए गए रेंज के आधार पर रन होता है। जब for loop एक बार चलता है, तब अंदर वाला while loop बार-बार चलता है जब तक उसकी condition गलत नहीं हो जाती।

Syntax:
for item in range(limit):
    while condition:
        # code block

Example:

for i in range(2):
    j = 0
    while j < 3:
        print(i, j)
        j += 1
Output:
0 0
0 1
0 2
1 0
1 1
1 2

Explanation:
जब i = 0, तब j = 0, 1, 2 तक चलेगा।
जब i = 1, तब j फिर से 0, 1, 2 तक चलेगा।


नेस्टेड लूप का उपयोग कहां होता है

1. Nested loops,  `*`, numbers, या letters का उपयोग करके विभिन्न प्रकार के पैटर्न की प्रिंटिंग करने में मदद करता है।

2. वे 2D arrays या टेबल्स को एक-एक करके पढ़ने (traverse करने) के लिए इस्तेमाल होते हैं।

3. इसका उपयोग प्रोग्राम में होता है जहां पर एक task को अन्य task के अंदर दोहराने की जरूरत होती है। 

4. गेम में इसका उपयोग स्क्रीन पर चीजों को लाइन-बाय-लाइन या कॉलम-बाय-कॉलम ले जाने के लिए किया जाता है।

5. इसका उपयोग multiplication tables (जैसे 2, 3, 4, 5. आदि के टेबल) को प्रिंट करने के लिए किया जाता है।

6. इसका उपयोग दो strings के प्रत्येक character को एक-एक करके तुलना करने के लिए किया जाता है

7.जब filtering या searching में कई स्टेप या शर्तें होती हैं, तब यह मदद करता है।

Common Mistakes in Nested Loops in Hindi - नेस्टेड लूप में होने वाली सामान्य गलतियां


नेस्टेड लूप में होने वाली सामान्य गलतियां निम्न है 
1. गलत loop conditions का उपयोग करने से infinite loops का निर्माण हो सकता है। यह लूप कार्य करना बंद कर देता है। उदाहरण के लिए यदि `i <= 10` के बजाय `i >= 10`  का उपयोग करते हैं तो आपका loop कभी नहीं रन होता।

2. दोनों inner और outer loops के लिए एक जैसे वेरिएबल नाम का उपयोग करने से भ्रम या त्रुटि पैदा कर सकता है। प्रत्येक loop के पास unique variable name जैसे outer के लिए `i` for  और inner के लिए `j` होना चाहिए।

3. indentation का सही तरीके से उपयोग नहीं करने पर कोड को पढ़ना और समझना कठिन हो सकता है।

4. inner loop के अंदर अनावश्यक या भारी कार्य को रखने पर आपका प्रोग्राम धीमा हो सकता है। यदि लूप के बाहर कुछ किया जा सकता है, तो उसे बाहर ही करें।

5. while, या do के तुरंत बाद semicolon ; का उपयोग करने से लूप वहीं पर समाप्त हो जाएगा और लूप की बॉडी सही तरीके से नहीं चलेगा। 

6. अगर break या continue का सही उपयोग नहीं किया जाए, तो loop बीच में रुक सकता है या कुछ values छूट सकती हैं।