Python पुनरावृत्ति मार्गदर्शिका: For लूपहरूदेखि itertools सम्म

目次

१. परिचय

Python पुनरावृत्ति कार्यक्रमको कार्यक्षमता र पढ्नीयतामा सुधार ल्याउन एक आवश्यक तत्व हो। अधिकांश प्रोग्रामिङ भाषाहरूमा foreach नामक लूप संरचना हुन्छ, जसले अनुक्रमको प्रत्येक तत्वमा सजिलै पुनरावृत्ति गर्न अनुमति दिन्छ, तर Python मा प्रत्यक्ष foreach लूप छैन। त्यसैले, Python ले for लूप, enumerate, र zip जस्ता विभिन्न सुविधाहरू प्रयोग गरेर समान प्रक्रिया हासिल गर्छ। यो लेखले foreach सँग मिल्दोजुल्दो Python पुनरावृत्ति कसरी गर्न सकिन्छ भन्ने सरल र व्यावहारिक दृष्टिकोणबाट व्याख्या गर्दछ।

Python मा foreach किन छैन?

Python ले स्पष्ट रूपमा foreach अपनाएको छैन किनभने भाषा डिजाइनले सरलता र लचीलापनलाई जोड दिन्छ। for लूप र कम्प्रिहेन्सनहरू धेरै पुनरावृत्तिक कार्यहरूलाई सजिलै कार्यान्वयन गर्न बनाइएका छन्। Python ले सूचकांकहरूमा र एकै साथ बहु अनुक्रमहरूमा पुनरावृत्ति गर्न बलियो सुविधाहरू प्रदान गर्दछ, त्यसैले foreach बिना पनि समान अभिव्यक्तिहरू सम्भव छन्।

Python मा पुनरावृत्तिको फाइदाहरू

Python मा पुनरावृत्तिले निम्न फाइदाहरू प्रदान गर्दछ।

  • संक्षिप्तता : कोडलाई अन्य भाषाहरूको तुलनामा अधिक संक्षिप्त रूपमा लेख्न सकिन्छ, जसले पढ्नीयता बढाउँछ।
  • लचीलापन : विभिन्न अनुक्रमहरू र विभिन्न डेटा संरचनाहरूमा समान रूपमा पुनरावृत्ति गर्न सकिन्छ।
  • कम्प्रिहेन्सनहरू : सूची, शब्दकोश, र अन्य संग्रहहरूलाई सरल रूपमा उत्पन्न गर्न सकिन्छ, जसले प्रभावकारी कोड लेख्न सजिलो बनाउँछ।

अर्को अध्यायमा, Python मा पुनरावृत्तिको मूलभूत पक्षको रूपमा for लूपको आधारभूत प्रयोगलाई विस्तृत रूपमा हेरिनेछ।

२. Python मा for लूपको आधारभूत कुरा

for लूप, Python को मुख्य पुनरावृत्ति सुविधा, अनुक्रमको प्रत्येक तत्वलाई प्रक्रिया गर्न बारम्बार प्रयोग गरिन्छ। यहाँ हामी सूची र ट्युपल जस्ता अनुक्रमहरूका लागि for लूपको आधारभूत प्रयोगको विस्तृत व्याख्या प्रस्तुत गर्छौं।

for लूपको आधारभूत सिन्ट्याक्स

Python for लूपलाई तलको सिन्ट्याक्स प्रयोग गरेर लेखिन्छ:

for element in sequence:
    process
  • तत्व : प्रत्येक पुनरावृत्तिमा अनुक्रमको प्रत्येक वस्तु क्रमशः प्राप्त गर्ने चल।
  • अनुक्रम : सूची, ट्युपल, वा स्ट्रिङ जस्ता इटेरेबल डेटा संरचना।

उदाहरण १: सूचीमा पुनरावृत्ति

पहिले, सूची प्रयोग गरेर एक आधारभूत for लूपको उदाहरण हेरौं।

fruits = ["apple", "banana", "cherry"]
for fruit in fruits:
    print(fruit)

उपरोक्त कोडमा, fruits सूचीको प्रत्येक तत्व क्रमशः fruit मा असाइन हुन्छ, र print(fruit) कार्यान्वयन हुन्छ। यस उदाहरणको आउटपुट तल देखिन्छ।

apple
banana
cherry

उदाहरण २: स्ट्रिङमा पुनरावृत्ति

स्ट्रिङहरू पनि अनुक्रम हुन्, त्यसैले प्रत्येक अक्षरमा पुनरावृत्ति गर्न सकिन्छ।

text = "hello"
for char in text:
    print(char)

यस कोडमा, स्ट्रिङ text को प्रत्येक अक्षर क्रमशः char मा असाइन हुन्छ र प्रिन्ट हुन्छ। परिणाम तल देखिन्छ।

h
e
l
l
o

उदाहरण ३: निर्दिष्ट दायरा (range फङ्क्शन) मा पुनरावृत्ति

यदि तपाईंले निर्दिष्ट संख्यात्मक दायरा मा पुनरावृत्ति गर्न चाहनुहुन्छ भने range() फङ्क्शन प्रयोग गर्नुहोस्।

for i in range(5):
    print(i)

यो कोडले ० देखि ४ सम्मका मानहरू क्रमशः i मा असाइन गरी प्रिन्ट गर्छ।

0
1
2
3
4

range फङ्क्शनको प्रयोग

  • range(n) : ० देखि n-1 सम्मका संख्या उत्पन्न गर्छ।
  • range(start, stop) : start देखि stop-1 सम्मका संख्या उत्पन्न गर्छ।
  • range(start, stop, step) : start देखि stop-1 सम्म step को अन्तरालमा संख्या उत्पन्न गर्छ।

for लूपका व्यावहारिक उदाहरणहरू

एरेको योग गणना

सूचीमा रहेका संख्याहरूको योग गणना गर्न for लूप प्रयोग गर्ने एउटा उदाहरण यहाँ छ।

numbers = [1, 2, 3, 4, 5]
total = 0
for number in numbers:
    total += number
print("Total:", total)

यस कोडमा, सूचीका संख्याहरू क्रमशः total मा जोडिन्छन्, र अन्तिम योग प्रिन्ट हुन्छ।

तत्वहरूको सर्ताधारित प्रक्रिया

तपाईंले for लूपभित्र सर्तहरू सेट गरेर निश्चित शर्तहरू पूरा गर्ने तत्वहरूलाई मात्र प्रक्रिया गर्न पनि सक्नुहुन्छ।

numbers = [1, 2, 3, 4, 5, 6]
for number in numbers:
    if number % 2 == 0:
        print(number, "is even")
    else:
        print(number, "is odd")

यो कोडले प्रत्येक सङ्ख्या सम वा विषम छ भनेर निर्धारण गर्दछ र परिणाम छाप्छ।

नेस्टेड फर लूपहरू (नेस्टेड संरचना)

for लूपहरूलाई नेस्टेड गर्न सकिन्छ, जुन बहुविध सूचीहरू वा दुई-आयामी सूचीहरू प्रोसेस गर्दा उपयोगी हुन्छ।

matrix = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for row in matrix:
    for item in row:
        print(item, end=" ")
    print()  # newline

यो कोडले दुई-आयामी सूची (सूचीको सूची) का सबै तत्वहरू प्रदर्शित गर्दछ।

1 2 3
4 5 6
7 8 9

सारांश

पाइथनको for लूप दक्षतापूर्वक सूचीहरू, टुपलहरू र स्ट्रिङहरू जस्ता अनुक्रमहरूमा पुनरावृत्ति गर्नका लागि एक आधारभूत संरचना हो। range() फङ्क्शनलाई सर्तहरू र नेस्टिङसँग जोडेर, तपाईं सरल रूपमा विभिन्न प्रक्रियाहरू कार्यान्वयन गर्न सक्नुहुन्छ। यो आधारभूत संरचनालाई बुझ्नाले तपाईंलाई foreach जस्तै लचिलो पुनरावृत्ति गर्न अनुमति दिन्छ।

३. इनुमरेट फङ्क्शनको प्रयोग

पाइथनमा अनुक्रममा पुनरावृत्ति गर्दा, सूचीको सूचकांक र तत्व दुवै प्राप्त गर्न चाहनुहुने समयहरू हुन्छन्। यस्ता अवस्थाहरूमा, enumerate फङ्क्शन प्रयोग गर्दा लूपिङ गर्दै सूचकांक र तत्व दक्षतापूर्वक प्राप्त गर्न सकिन्छ। यहाँ, हामी enumerate फङ्क्शनको आधारभूत प्रयोग र व्यावहारिक उदाहरणहरूको विस्तृत व्याख्या गर्नेछौं।

इनुमरेट फङ्क्शनको आधारभूत वाक्यविन्यास

enumerate फङ्क्शन प्रयोग गरेर, अनुक्रमका प्रत्येक तत्वलाई सूचकांक सौंपिन्छ, जसले सूचकांक र तत्वका जोडाहरू उत्पन्न गर्दछ। यो निम्न वाक्यविन्याससँग प्रयोग गरिन्छ।

for index, element in enumerate(sequence):
    process
  • सूचकांक : अनुक्रममा प्रत्येक तत्वसँग सम्बन्धित सूचकांक सङ्ख्या।
  • तत्व : अनुक्रममा प्रत्येक तत्व।
  • अनुक्रम : सूची, टुपल वा स्ट्रिङ जस्ता iterable डेटा संरचना।

उदाहरण १: सूचीका सूचकांकहरू र तत्वहरू एकैसाथ प्राप्त गर्ने

enumerate प्रयोग गरेर सूचीका सूचकांकहरू र तत्वहरू एकैसाथ प्राप्त गरेर सूची प्रोसेस गर्ने उदाहरण।

fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
    print(f"{index}: {fruit}")

यो कोडले fruits सूचीका प्रत्येक तत्वलाई यसको सूचकांकसँगै आउटपुट गर्दछ।

0: apple
1: banana
2: cherry

उदाहरण २: सुरु सूचकांक निर्दिष्ट गर्ने

enumerate फङ्क्शनमा सुरु सूचकांक निर्दिष्ट गर्ने विकल्प हुन्छ। डिफल्ट रूपमा, सूचकांकहरू ० बाट सुरु हुन्छन्, तर तपाईं कुनै पनि मानलाई सुरु सूचकांकको रूपमा सेट गर्न सक्नुहुन्छ।

fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits, start=1):
    print(f"{index}: {fruit}")

यो कोडले १ बाट सुरु हुने सूचकांकहरू आउटपुट गर्दछ।

1: apple
2: banana
3: cherry

इनुमरेट फङ्क्शनका व्यावहारिक उदाहरणहरू

कार्य सूची प्रगति प्रदर्शन गर्ने

enumerate फङ्क्शन सूचकांकहरू उपयोगी हुने अवस्थाहरूमा पनि उपयोगी हुन्छ, जस्तै कार्य व्यवस्थापनमा। तलको उदाहरणले सूची ढाँचामा प्रत्येक कार्यको प्रगति प्रदर्शन गर्दछ।

tasks = ["Laundry", "Cleaning", "Cooking"]
for index, task in enumerate(tasks, start=1):
    print(f"Task{index}: {task} - Completed")

यो कोडले कार्य सूचीका प्रत्येक कार्यलाई सङ्ख्यासँग आउटपुट गर्दछ।

Task1: Laundry - Completed
Task2: Cleaning - Completed
Task3: Cooking - Completed

एरे भित्र विशिष्ट सर्तहरूमा आधारित प्रोसेसिङ

एरेमा विशिष्ट स्थानहरूमा रहेका तत्वहरूलाई तिनका सूचकांकहरू प्रयोग गरेर प्रोसेस गर्न चाहनुहुन्छ भने, enumerate पनि उपयोगी हुन्छ।

numbers = [10, 20, 30, 40, 50]
for index, number in enumerate(numbers):
    if index % 2 == 0:
        print(f"Element {number} at index {index} has an even index")

यो कोडले सम सूचकांकहरूमा रहेका तत्वहरू आउटपुट गर्दछ।

Element 10 at index 0 has an even index
Element 30 at index 2 has an even index
Element 50 at index 4 has an even index

सारांश

enumerate फङ्क्शन सूचकांकहरू र तत्वहरू एकैसाथ प्राप्त गर्न अत्यन्त उपयोगी छ। तपाईं सुरु सूचकांक निर्दिष्ट गर्न सक्नुहुन्छ किनकि यो सूचीहरूको नम्बरिङ र विशिष्ट अवस्थाहरूमा आधारित प्रोसेसिङका लागि उपयुक्त छ। विशेष गरी, यसले सूचीमा प्रत्येक तत्वलाई ट्र्याक गर्न सजिलो बनाउँछ, कोडको पढ्न सकिनेता र मर्मत गर्न सकिनेता सुधार गर्दछ।

४. zip फङ्क्शनसँग बहुविध अनुक्रमहरूको एकैसाथ Iteration

पाइथनको zip फङ्क्शन प्रयोग गरेर, तपाईं बहुविध अनुक्रमहरूमा एकैसाथ iterate गर्न सक्नुहुन्छ। यो सुविधा सूचीहरू, टुपलहरू वा अन्य अनुक्रमहरूलाई समानान्तर रूपमा प्रोसेस गर्न चाहनुहुन्छ जब अत्यन्त उपयोगी हुन्छ। यहाँ हामी zip फङ्क्शनको आधारभूत प्रयोग र व्यावहारिक उदाहरणहरू प्रस्तुत गर्दछौं।

zip फङ्क्शनको आधारभूत Syntax

zip फङ्क्शनले बहुविध अनुक्रमहरूलाई तर्कको रूपमा लिन्छ, तिनका तत्वहरूलाई टुपलहरूमा समूहित गर्दछ र एक iterable object उत्पादन गर्दछ। निम्न syntax प्रयोग गरेर zip फङ्क्शन प्रयोग गर्नुहोस्।

for element1, element2, ... in zip(sequence1, sequence2, ...):
    process
  • element1, element2… : प्रत्येक अनुक्रमबाट एक तत्वलाई टुपलमा समूहित गरिन्छ र क्रममा variables मा असाइन गरिन्छ।
  • sequence1, sequence2… : तपाईंले सँगै प्रोसेस गर्न चाहनुहुने अनुक्रमहरू निर्दिष्ट गर्नुहोस्, जस्तै सूचीहरू वा टुपलहरू।

उदाहरण १: दुई सूचीहरूमा एकैसाथ Iterate गर्ने

यो उदाहरणले zip फङ्क्शन प्रयोग गरेर दुई सूचीहरूमा एकैसाथ iterate गर्दछ र प्रत्येक सूचीबाट संयुक्त तत्वहरू प्रिन्ट गर्दछ।

names = ["Alice", "Bob", "Charlie"]
scores = [85, 92, 78]
for name, score in zip(names, scores):
    print(f"{name}'s score is {score}")

यो कोडले names सूची र scores सूचीमा एकैसाथ iterate गर्दछ, नामहरू र स्कोरहरू आउटपुट गर्दछ।

Alice's score is 85
Bob's score is 92
Charlie's score is 78

उदाहरण २: तीन वा बढी सूचीहरूमा एकैसाथ Iterate गर्ने

zip फङ्क्शनले तीन वा बढी अनुक्रमहरूलाई पनि समर्थन गर्दछ, त्यसैले तपाईं बहुविध सूचीहरू वा टुपलहरूलाई एकैसाथ प्रोसेस गर्न सक्नुहुन्छ।

names = ["Alice", "Bob", "Charlie"]
scores = [85, 92, 78]
grades = ["B", "A", "C"]
for name, score, grade in zip(names, scores, grades):
    print(f"{name}'s score is {score}, and the grade is {grade}")

यो कोडले नामहरू, स्कोरहरू र ग्रेडहरूलाई सँगै आउटपुट गर्दछ।

Alice's score is 85, and the grade is B
Bob's score is 92, and the grade is A
Charlie's score is 78, and the grade is C

अनुक्रमहरूको फरक लम्बाइ हुँदा zip फङ्क्शनको व्यवहार

zip फङ्क्शन प्रयोग गर्दा, यदि अनुक्रमहरूको लम्बाइ फरक छ भने, iteration सबैभन्दा छोटो अनुक्रमको लम्बाइमा रोकिन्छ। तलको उदाहरणमा यो जाँचौं।

names = ["Alice", "Bob"]
scores = [85, 92, 78]  # 3 elements
for name, score in zip(names, scores):
    print(f"{name}'s score is {score}")

यो अवस्थामा, names मा मात्र दुई तत्वहरू छन्, त्यसैले तेस्रो तत्वलाई बेवास्ता गरिन्छ र आउटपुट निम्नानुसार हुनेछ।

Alice's score is 85
Bob's score is 92

zip फङ्क्शनका व्यावहारिक उदाहरणहरू

सूची तत्वहरूलाई जोडाहरूको रूपमा प्रदर्शित गर्ने

zip फङ्क्शन प्रयोग गरेर, तपाईं एकल सूचीभित्र सट्टापट्टा तत्वहरूलाई जोडाहरू बनाउन सक्नुहुन्छ प्रोसेसिङका लागि।

data = [10, 20, 30, 40]
for x, y in zip(data, data[1:]):
    print(f"Pair: ({x}, {y})")

यो कोडले सट्टापट्टा तत्वहरूलाई जोडाहरू बनाउँछ र तिनीहरूलाई प्रिन्ट गर्दछ।

Pair: (10, 20)
Pair: (20, 30)
Pair: (30, 40)

सारांश

zip फङ्क्शन बहुविध अनुक्रमहरूमा एकैसाथ iterate गर्नका लागि एक शक्तिशाली उपकरण हो। यसले जोडाहरू बनाउने वा फरक डाटा टुक्राहरूलाई संयोजन गर्ने जस्ता कार्यहरूमा सहयोग गर्दछ र संक्षिप्त कोड लेख्न अनुमति दिन्छ। फरक लम्बाइका अनुक्रमहरूसँग काम गर्दा, आवश्यकता अनुसार zip_longest प्रयोग गरेर लचिलो iteration सम्भव हुन्छ।

侍エンジニア塾

५. List Comprehensions (List Comprehension)

पाइथनमा “list comprehension” भन्ने नामक एक शक्तिशाली तकनीक समावेश छ जसले अनुक्रमहरू सरल रूपमा उत्पन्न गर्नका लागि प्रयोग हुन्छ। list comprehensions प्रयोग गरेर, परम्परागत for loop सँग सूचीहरू उत्पन्न गर्ने कार्य अझ बढी संक्षिप्त र पढ्न सकिने हुन्छ। यो अध्यायले list comprehensions को आधारभूत प्रयोग व्याख्या गर्दछ, वास्तविक कोड उदाहरणहरूसँग, तिनको सुविधालाई चित्रण गर्न।

सूची समझदारीहरूको मूल सिंटैक्स

सूची समझदारीहरू तलको सिंटैक्स प्रयोग गरेर लेखिन्छन्।

[expression for element in sequence]
  • Expression : प्रत्येक तत्वमा लागू हुने अपरेसन।
  • Element : क्रमशः अनुक्रमबाट प्रत्येक वस्तु प्राप्त गर्ने चल।
  • Sequence : सूची, ट्युपल, वा स्ट्रिङ जस्ता इटेरेबल डेटा संरचना।

उदाहरण १: मूल सूची समझदारी

उदाहरणका लागि, सूचीको प्रत्येक तत्वलाई दोब्बर गरेर बनाउने काम परम्परागत for लूप प्रयोग गरेर तल देखाइँदैछ।

numbers = [1, 2, 3, 4, 5]
doubled = []
for number in numbers:
    doubled.append(number * 2)
print(doubled)

सूची समझदारी प्रयोग गरेर, माथिको कोडलाई संक्षिप्त रूपमा तल लेख्न सकिन्छ।

numbers = [1, 2, 3, 4, 5]
doubled = [number * 2 for number in numbers]
print(doubled)

आउटपुट तल देखाइँदैछ।

[2, 4, 6, 8, 10]

सशर्त सूची समझदारीहरू

सूची समझदारीहरूमा, तपाईंले केवल विशिष्ट तत्वहरूलाई प्रक्रिया गर्न सशर्त अभिव्यक्ति थप्न सक्नुहुन्छ। सर्तलाई for पछि if लेखेर निर्दिष्ट गरिन्छ।

उदाहरण २: सशर्त सूची समझदारी

उदाहरणका लागि, सूचीमा केवल सम सङ्ख्याहरूलाई दोब्बर गर्न, तपाईंले यसरी लेख्नुहुन्छ:

numbers = [1, 2, 3, 4, 5]
doubled_even = [number * 2 for number in numbers if number % 2 == 0]
print(doubled_even)

यो कोडले केवल सम सङ्ख्याहरू निकाल्छ र तिनीहरूलाई दोब्बर गरेर नयाँ सूची बनाउँछ।

[4, 8]

उदाहरण ३: else प्रयोग गरेर सशर्त सूची समझदारी

यदि तपाईं प्रत्येक तत्वमा सशर्त शाखा प्रयोग गरेर विभिन्न प्रक्रिया लागू गर्न चाहनुहुन्छ भने, if भन्दा पहिले else थप्न सक्नुहुन्छ।

numbers = [1, 2, 3, 4, 5]
result = [number * 2 if number % 2 == 0 else number for number in numbers]
print(result)

यो कोडले सङ्ख्या सम हुँदा दोब्बर गर्छ, नत्र मूल सङ्ख्यालाई सूचीमा थप्छ।

[1, 4, 3, 8, 5]

सारांश

सूची समझदारीहरू प्रयोग गरेर, for लूपको तुलनामा अधिक संक्षिप्त र प्रभावकारी रूपमा सूचीहरू उत्पन्न गर्न सकिन्छ। साध सशर्त प्रक्रिया र विशिष्ट अपरेसनहरूलाई संयोजन गरेर अधिक पायथनिक कोड लेख्न सकिन्छ। तर, जटिल समझदारीहरूले पढ्न सजिलोपन घटाउन सक्छ, त्यसैले उपयुक्त परिस्थितिमा मात्र प्रयोग गर्नु महत्त्वपूर्ण छ।

६. शब्दकोशहरूमा पुनरावृत्ति

शब्दकोश (dict) पायथनको मुख्य डेटा संरचनाहरू मध्ये एक हो, जसले कुञ्जी‑मान जोडीहरू संग्रहित गर्दछ। सूची र ट्युपल जस्तै, शब्दकोशहरूमा पनि पुनरावृत्ति गर्न सकिन्छ, तर शब्दकोशहरूमा प्रायः कुञ्जीहरू, मानहरू, वा दुवै प्राप्त गरिन्छ। यो अध्यायले शब्दकोशहरूमा कसरी पुनरावृत्ति गर्ने र उपयोगी कार्यहरूबारे विस्तृत रूपमा व्याख्या गर्दछ।

मूल शब्दकोश पुनरावृत्ति

मूल शब्दकोश पुनरावृत्तिमा, तपाईं for लूप प्रयोग गरेर कुञ्जीहरू, मानहरू, वा कुञ्जी‑मान जोडीहरू प्राप्त गर्नुहुन्छ।

उदाहरण १: केवल कुञ्जीहरूमा पुनरावृत्ति

for लूप प्रयोग गरेर शब्दकोशमा पुनरावृत्ति गर्दा, डिफल्ट रूपमा केवल कुञ्जीहरू प्राप्त हुन्छन्।

person = {"name": "Taro", "age": 30, "occupation": "Engineer"}
for key in person:
    print(key)

यो कोडले शब्दकोशका सबै कुञ्जीहरू क्रमअनुसार प्रिन्ट गर्दछ।

name
age
occupation

उदाहरण २: केवल मानहरूमा पुनरावृत्ति

कोशका मानहरूमा पुनरावृत्ति गर्न, values() मेथड प्रयोग गर्नुहोस्।

person = {"name": "Taro", "age": 30, "occupation": "Engineer"}
for value in person.values():
    print(value)

यो कोडले शब्दकोशका सबै मानहरू क्रमअनुसार प्रिन्ट गर्दछ।

Taro
30
Engineer

उदाहरण ३: कुञ्जी‑मान जोडीहरूमा पुनरावृत्ति

यदि तपाईं एकै साथ कुञ्जी र मान दुवै प्राप्त गर्न चाहनुहुन्छ भने, items() मेथड प्रयोग गर्नुहोस्। यसले प्रत्येक जोडीलाई ट्युपलको रूपमा फिर्ता गर्छ, जसलाई दुई चलमा अनप्याक गर्न सकिन्छ।

person = {"name": "Taro", "age": 30, "occupation": "Engineer"}
for key, value in person.items():
    print(f"{key}: {value}")

यो कोडले सबै कुञ्जी‑मान जोडीहरू प्रिन्ट गर्दछ।

name: Taro
age: 30
occupation: Engineer

सशर्त शब्दकोश पुनरावृत्ति

यदि तपाईं शब्दकोशभित्र विशेष सर्त पूरा गर्ने जोडीहरू मात्र प्राप्त गर्न चाहनुहुन्छ भने, if स्टेटमेन्ट प्रयोग गरेर सर्त निर्दिष्ट गर्न सक्नुहुन्छ।

उदाहरण ४: विशिष्ट मानहरू भएका जोडीहरू मात्र आउटपुट गर्ने

उदाहरणका लागि, उमेर ३० वा सोभन्दा बढी भएका वस्तुहरू मात्र आउटपुट गर्न, तपाईंले यसरी लेख्नुहुन्छ:

people = {"Taro": 30, "Hanako": 25, "Jiro": 35}
for name, age in people.items():
    if age >= 30:
        print(f"{name} is at least 30 years old")

यो कोडले केवल ती जोडीहरूलाई आउटपुट गर्छ जुन सर्तलाई पूरा गर्छ।

Taro is at least 30 years old
Jiro is at least 30 years old

डिक्शनरी कम्प्रिहेन्सनहरू

सूची कम्प्रिहेन्सनहरू जस्तै, डिक्शनरी कम्प्रिहेन्सनहरू पनि सम्भव छन्। तिनीहरूले सर्तको आधारमा नयाँ डिक्शनरी सिर्जना गर्न अनुमति दिन्छन्।

उदाहरण ५: सर्तसहित नयाँ डिक्शनरी सिर्जना गर्नुहोस्

उदाहरण, ३० वर्ष वा सोभन्दा माथिका व्यक्तिहरू मात्र समावेश गर्ने नयाँ डिक्शनरी बनाउन, तपाईंले यसरी लेख्न सक्नुहुन्छ:

people = {"Taro": 30, "Hanako": 25, "Jiro": 35}
adults = {name: age for name, age in people.items() if age >= 30}
print(adults)

यस कोडको आउटपुट यस प्रकार हुन्छ।

{'Taro': 30, 'Jiro': 35}

सारांश

Python मा, तपाईंले कुञ्जीहरू, मानहरू, वा कुञ्जी‑मान जोडीहरू प्राप्त गरेर डिक्शनरीहरूमा इटरेट गर्न सक्नुहुन्छ। साथै, सर्तीय डिक्शनरी कम्प्रिहेन्सनहरू र नेस्टेड डिक्शनरीहरूलाई ह्यान्डल गर्नेले लचिलो डेटा प्रोसेसिङ सक्षम पार्छ। डिक्शनरीहरू जटिल डेटा व्यवस्थित र व्यवस्थापन गर्न अत्यन्त उपयोगी डेटा संरचना हुन्, र उपयुक्त इटरेशन प्रविधिहरू प्रयोग गर्दा तिनीहरूको उपयोगिता बृद्धि हुन्छ।

७. सेटहरूमा इटरेट गर्नुहोस्

सेट (set) एउटा डेटा संरचना हो जसले अनन्य तत्वहरू संग्रहित गर्छ, विशेष गरी कुनै तत्व उपस्थित छ कि छैन जाँच्न वा सूचीबाट दोहोर्याइएका वस्तुहरू हटाउन उपयोगी हुन्छ। Python सेटहरू क्रमबद्ध छैनन्, त्यसैले सूची वा ट्युपल जस्तै इन्डेक्सद्वारा तत्वहरू पहुँच गर्न सकिँदैन, तर for लूप प्रयोग गरेर सबै तत्वहरूमा इटरेट गर्न सकिन्छ।
यस अध्यायमा, हामी सेटहरूमा इटरेट गर्ने आधारभूत कुराहरू, सर्तीय इटरेशन, र सेट‑विशिष्ट अपरेसनहरू समावेश गर्ने इटरेशन विधिहरूलाई कभर गर्नेछौं।

आधारभूत सेट इटरेशन

सेट प्रत्येक तत्वलाई प्रक्रिया गर्न for लूप प्रयोग गर्नुहोस्। सेटहरूमा क्रम नहुनुका कारण, प्रत्येक पटकको प्रक्रिया क्रम फरक हुन सक्छ।

उदाहरण १: सेटका सबै तत्वहरू प्रिन्ट गर्नुहोस्

पहिले, सेटका सबै तत्वहरू प्रिन्ट गर्ने आधारभूत इटरेशन उदाहरण हेर्नुहोस्।

fruits = {"apple", "banana", "cherry"}
for fruit in fruits:
    print(fruit)

आउटपुट क्रम ग्यारेन्टी छैन, तर प्रत्येक तत्व केवल एक पटक देखिन्छ।

banana
cherry
apple

सर्तीय सेट इटरेशन

तपाईंले सर्त पूरा गर्ने सेटका तत्वहरू मात्र प्रक्रिया गर्न पनि सक्नुहुन्छ। सर्तको आधारमा फिल्टर गर्न if स्टेटमेन्ट प्रयोग गर्नुहोस्।

उदाहरण २: सर्त पूरा गर्ने तत्वहरू मात्र प्रिन्ट गर्नुहोस्

उदाहरणका लागि, सेटमा पाँच वा सोभन्दा बढी अक्षरको स्ट्रिङहरू मात्र आउटपुट गर्न, तपाईंले यसरी लेख्न सक्नुहुन्छ:

fruits = {"apple", "banana", "cherry", "fig", "kiwi"}
for fruit in fruits:
    if len(fruit) >= 5:
        print(fruit)

यो कोडले पाँच वा बढी अक्षर भएका फलफूलका नामहरू प्रिन्ट गर्छ।

banana
cherry
apple

सेट कम्प्रिहेन्सनहरू

सूची कम्प्रिहेन्सनहरू जस्तै, सेट कम्प्रिहेन्सनहरू पनि उपलब्ध छन्। सेट कम्प्रिहेन्सन प्रयोग गरेर सर्तको आधारमा नयाँ सेट संक्षिप्त रूपमा सिर्जना गर्न सकिन्छ।

उदाहरण ३: सर्तसहित नयाँ सेट सिर्जना गर्नुहोस्

उदाहरणका लागि, अघिल्लो उदाहरण जस्तै पाँच वा बढी अक्षर भएका तत्वहरू मात्र समावेश गर्ने नयाँ सेट बनाउन, तपाईंले यसरी लेख्न सक्नुहुन्छ:

fruits = {"apple", "banana", "cherry", "fig", "kiwi"}
long_fruits = {fruit for fruit in fruits if len(fruit) >= 5}
print(long_fruits)

आउटपुट तलको जस्तै देखिनेछ (क्रम ग्यारेन्टी छैन)।

{'banana', 'cherry', 'apple'}

सारांश

सेटहरू दोहोर्याइएका तत्वहरूलाई अस्वीकार गर्ने र क्रम नहुनुका कारण सूची वा ट्युपलबाट फरक विशेषता राख्ने डेटा संरचना हुन्। तिनीहरू अनन्य डेटा ह्यान्डल गर्न र अन्य सेटहरूसँगको अपरेसन (जस्तै इन्टरसेक्शन वा डिफरेंस) गर्न विशेष गरी उपयुक्त छन्। साथै, सेट कम्प्रिहेन्सनहरू प्रयोग गर्दा संक्षिप्त र प्रभावकारी डेटा प्रोसेसिङ सम्भव हुन्छ।

८. itertools मोड्युलको प्रयोग

itertools मोड्युल पायथनको मानक पुस्तकालयमा समावेश गरिएको एक उपयोगी टुलकिट हो जसले इटरेशनमा सहयोग पुर्‍याउँछ। यसले इटेरेकारी रूपमा ह्यान्डल गर्ने धेरै फङ्सनहरू प्रदान गर्दछ, जुन ठूलो मात्रामा डेटा संग काम गरी उपयोगी हुन्छ। यस अध्यायमा, हामी itertools मोड्युलका मुख्य फङ्सनहरू र तिनीहरूलाई कसरी प्रयोग गर्ने भन्ने व्याखौं।

itertools मोड्युलका प्रमुख फङ्सनहरू

यहाँ हामी प्रतिनिधि फङ्सनहरू परिचय गराउँछौं र ठोस उदाहरणहरूसँग तिनीहरूलाई कसरी प्रयोग गर्ने भन्ने व्याख्या गर्छौं।

१. count फङ्सन

count फङ्सन एउटा इटेरेटर हो जसले निर्दिष्ट सुरु मानबाट अनन्त रूपमा बढ्दो संख्याहरू उत्पन्न गर्छ। माथिल्लो सीमा नसेट गरिएको अवस्थामा क्रमिक संख्याहरू उत्पन्न गर्न मुख्यतया प्रयोग गरिन्छ।

from itertools import count

for i in count(10):
    if i > 15:
        break
    print(i)

यो कोड १० बाट सुरु हुन्छ र १६ भन्दा कम पूर्णांकहरू आउटपुट गर्छ।

10
11
12
13
14
15

२. cycle फङ्सन

cycle फङ्सनले दिइएको अनुक्रमलाई अनन्त रूपमा दोहोर्याउने इटेरेटर बनाउँछ। तपाईंले विशेष ढाँचा बारम्बार आउटपुट गर्न चाहनुहुन्छ भने यो उपयोगी हुन्छ।

from itertools import cycle

count = 0
for item in cycle(["A", "B", "C"]):
    if count == 6:
        break
    print(item)
    count += 1

यो कोडले “A”, “B”, “C” लाई दोहोर्याएर कुल ६ पटक आउटपुट गर्छ।

A
B
C
A
B
C

३. repeat फङ्सन

repeat फङ्सनले निर्दिष्टलाई अनन्त रूपमा दोहोर्याउने इटेरेटर बनाउँछ। दोस्रो आर्गुमेन्ट प्रयोग गरेर दोहोर्याउने संख्या पनि निर्दिष्ट गर्न सकिन्छ।

from itertools import repeat

for item in repeat("Python", 3):
    print(item)

यो कोडले “Python” लाई तीन आउटपुट गर्छ।

Python
Python
Python

४. accumulate फङ्सन

accumulate फङ्सनले दिइएको अनुक्रमको संचयी योग गणना गर्ने इटेरेटर बनाउँछ। उदाहरणका सूचीका तत्वहरूलाई क्रमिक रूपमा जोड्न यो उपयोगी हुन्छ। कस्टम फङ्सन प्रयोग गरेर गुणनफल वा अधिकतम मानजस्ता अन्य गणनाहरू पनि गर्न सकिन्छ।

from itertools import accumulate

numbers = [1, 2, 3, 4, 5]
result = list(accumulate(numbers))
print(result)

यो कोडले सूचीको संचयी योग गणना गरी तलको परिणाम आउटपुट गर्छ।

[1, 3, 6, 10, 15]

सारांश

itertools मोड इटरेशनलाई प्रभावकारी रूपमा कार्यान्वयन गर्न धेरै फङ्सनहरू प्रदान गर्दछ। अनन्त इटरेशन वा डेटा संयोजन र क्रमपरिवर्तन (permutations) आवश्यक पर्दा यो विशेष गरी उपयोगी हुन्छ, जसले कोडलाई संक्षिप्त राख्न र प्रोसेसिङ गति बढ्दत गर्छ। इटरेशन लचिलो रूपमा ह्यान्डल गरेर, तपाईं ठूलो डाटासेट र जटिल अपरेसनहरूलाई सम्हाल्नेन्छ।

९. सारांश

पायथनले इटरेशनलाई ह्यान्डल गर्ने विभिन्न तरिकाहरू प्रदान गर्दछ, प्रत्येकको आफ्नै विशेषता र प्रयोगहरू छन्। यस श्रृंखलामा, हामीले पायथनमा इटरेशनलाई अधिक प्रभावकारी बनाउने विविध प्रविधिहरू सिक्यौं। यस अध्यायमा, ती प्रविधिहरूको पुनरावलोकन गर्नेछौं विकल्प चयन गर्न मद्दत पुर्याउँछ।

प्रत्येक विधिको मुख्य बुँदा र प्रयोगहरू

तल प्रत्येक विधिको मुख्य बुँदा र प्रयोगहरूको संक्षिप्त सारांश दिइएको छ।

१. for लूप

बुँदा: पायथनमा आधारभूत इटरेशन सिन्ट्याक्स। सरल र बहुमुखी।
प्रयोग: सूची, ट्युपल, वा स्ट्रिङ जस्ता अनुक्रमहरू प्रोसेस गर्दा प्रयोग गरिन्छ।

२. enumerate फङ्सन

बुँदा: सूचकांक (इन्डेक्स) तत्व दुवैलाई एकै साथ प्राप्त गर्ने फङ्सन।
प्रयोग: क्रम महत्त्वपूर्ण हुने डेटा वा इटरेट गर्दा।

३. zip फङ्सन

बुँदा: धेरै अनुक्रमहरूलाई एकै साथ इटरेट गर्न अनुमति दिन्छ।
प्रयोग: विभिन्न सूची वा ट्युपलका सम्बन्धित तत्वहरू प्रोसेस गर्न सुविधाजनक।

४. लिस्ट कम्प्रिहेन्सन

बुँदा: सूचीहरू उत्पन्न गर्ने सरल र प्रभावकारी तरिका। सर्तीय प्रोसेसिङ पनि सम्भव।
प्रयोग: सर्त वा अभिव्यक्तिको आधारमा सूचीहरू उत्पन्न र फिल्टर गर्न।

५. डिक्शनरी इटरेशन

बुँदा: कुञ्जी, मान, वा कुञ्जी-मान जोडीहरू प्राप्त गर्न सकिन्छ।
प्रयोग: डिक्शनरी डेटा ह्यान्डल गर्दा र कुञ्जी तथा मानको आधारमा प्रोसेस गर्दा प्रयोग गरिन्छ।

६. सेट पुनरावृत्ति

बिन्दु: अनौठो (नन-डुप्लिकेट) तत्वहरू भएका डाटा प्रक्रिया गर्न सक्छ। उपयोग: अनौठो डाटा प्रक्रिया गर्ने र अन्य सेटहरूसँग सञ्चालन गर्ने।

७. itertools मोड्युल

बिन्दु: असीमित पुनरावृत्ति सक्षम बनाउँछ, बहु अनुक्रमहरूको संयोजन, र क्रमचय र संयोजनहरूको उत्पन्न गर्ने। उपयोग: जटिल पुनरावृत्तिका लागि वा ठूलो मात्रामा डाटा कुशलतापूर्वक ह्यान्डल गर्दा।

इष्टतम विधि छनोट गर्ने दिशानिर्देशहरू

पुनरावृत्तिमा, लक्ष्य र डाटा संरचनाका आधारमा इष्टतम विधि छनोट गर्नु महत्वपूर्ण छ। तल प्रत्येक उद्देश्यका लागि उपयुक्त पुनरावृत्ति प्रविधि छनोट गर्ने दिशानिर्देशहरू छन्।

  1. साधारण सूची वा टुपल पुनरावृत्ति : आधारभूत for लूप सबैभन्दा सरल र साधारण छ।
  2. सूचकांक आवश्यक हुँदा : enumerate प्रयोग गरेर, तपाईं सूचकांक र तत्व दुवै प्राप्त गर्दै लूप गर्न सक्नुहुन्छ।
  3. एकैसाथ बहु अनुक्रमहरू प्रक्रिया गर्दा : zip प्रयोग गरेर, तपाईं बहु सूचीहरू वा टुपलहरूलाई समानान्तरमा कुशलतापूर्वक प्रक्रिया गर्न सक्नुहुन्छ।
  4. सर्तीय सूची उत्पन्न गर्दा : सूची बुझाइहरू प्रयोग गरेर, तपाईं सर्तीय रूपमा तत्वहरू छनोट गर्न सक्नुहुन्छ र गणना गरिएका परिणामहरूलाई सिधै सूचीमा भण्डारण गर्न सक्नुहुन्छ।
  5. शब्दकोश वा सेटहरूमा विशेष सञ्चालन आवश्यक हुँदा : items() , values() विधिहरू वा शब्दकोश र सेटहरूका लागि विशेषीकृत सेट बुझाइहरू प्रयोग गरेर, तपाईं कुञ्जीहरू र मानहरू वा अनौठो डाटा सजिलै ह्यान्डल गर्न सक्नुहुन्छ।
  6. उन्नत पुनरावृत्ति वा अनुकूलन आवश्यक हुँदा : itertools मोड्युलको लाभ उठाएर, कुशल असीमित पुनरावृत्ति, बहु डाटा सेटहरूको संयोजन, र विशेष क्रमचय तथा संयोजनहरूको उत्पन्न गर्न सकिन्छ।

निष्कर्ष

पाइथनले पुनरावृत्तिलाई कुशल र संक्षिप्त रूपमा सञ्चालन गर्ने धनी सुविधाहरू प्रदान गर्दछ। साधारण लूपहरूबाट बहु अनुक्रमहरूमा उन्नत पुनरावृत्तिसम्मका विभिन्न प्रविधिहरू प्रयोग गरेर, तपाईं कोडको पढ्न सकिनेता र कुशलतालाई धेरै सुधार गर्न सक्नुहुन्छ। यी विधिहरूलाई उचित रूपमा लागू गर्दा पाइथन प्रोग्रामिङ अझ लचिलो र शक्तिशाली बन्छ। अगाडि, आवश्यकताअनुसार प्रत्येक सुविधालाई मास्टर गर्ने लक्ष्य राख्नुहोस् र कुशल कोड लेख्न जारी राख्नुहोस्।

侍エンジニア塾