Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

कुशल लूपिंग के लिए इटरेटर बनाने वाले पायथन कार्य

जैसा कि अधिकांश प्रोग्रामिंग भाषाओं में पायथन लूपिंग कंस्ट्रक्शन बनाने के लिए स्टेटमेंट के लिए और समय प्रदान करता है। सूची, टपल या स्ट्रिंग जैसे पुनरावृत्तियों को पार करने के लिए कथन के लिए विशेष रूप से उपयोगी है। पायथन के मानक पुस्तकालय के itertools मॉड्यूल में अधिक कुशल और तेज़ पुनरावृत्ति उपकरण परिभाषित किए गए हैं। ये इटरेटर बिल्डिंग ब्लॉक कार्यात्मक प्रोग्रामिंग भाषाओं जैसे हास्केल और एसएमएल में समान टूल के पाइथोनिक कार्यान्वयन हैं।

itertools मॉड्यूल में फंक्शन तीन प्रकार के होते हैं।

  • अनंत पुनरावर्तक
  • परिमित पुनरावर्तक
  • कॉम्बिनेटोरिक इटरेटर्स

निम्नलिखित कार्य अनंत अनुक्रम उत्पन्न करते हैं।

गिनती () - यह फ़ंक्शन प्रारंभ मान से समान दूरी वाले मानों का पुनरावर्तक लौटाता है। इस अंतराल से क्रमिक मान बढ़ाने के लिए फ़ंक्शन में वैकल्पिक चरण मान हो सकता है।

>>> from itertools import count
>>> for x in count(20):
print (x)
>>> for x in count(100,10):
print (x)

पहला कथन 20 से शुरू होने वाले अनंत अनुक्रम उत्पन्न करेगा और दूसरा चरण आवृत्ति 10 के साथ 100 से संख्याएं उत्पन्न करेगा। ध्यान दें कि लूप अनंत हैं और अपने आप समाप्त नहीं होंगे। ctrl-C दबाने पर उन्हें समाप्त कर दिया जाएगा

चक्र () - यह फ़ंक्शन दिए गए पुनरावर्तनीय से प्रत्येक तत्व को वापस करना शुरू कर देता है और इसकी प्रतिलिपि सहेजता है। एक बार तत्व समाप्त हो जाने के बाद, सहेजी गई प्रतिलिपि में तत्व वापस आ जाते हैं जिससे अनंत लूप बन जाता है।

>>> from itertools import cycle
>>> for x in cycle("hello"):
print (x)
के लिए

स्ट्रिंग में वर्णों को तब तक दोहराया जाएगा जब तक कि कीबोर्ड इंटरप्ट Ctrl-C जारी नहीं हो जाता।

दोहराएं () - यह फ़ंक्शन ऑब्जेक्ट तर्क को बार-बार लौटाता है। यदि दूसरा तर्क 'times' प्रदान किया जाता है, तो दोहराव कई बार होता है।

>>> from itertools import repeat
>>> for x in repeat(1):
print (x)
>>> for x in repeat('hello', 10):
print (x)

पहला लूप अंतहीन रूप से 1 प्रिंट करेगा। दूसरा 'हैलो' 10 बार प्रिंट करता है।

निम्नलिखित श्रेणी में कार्य परिमित पुनरावृत्तियों को लौटाते हैं जो कम से कम इनपुट अनुक्रम पर समाप्त होते हैं।

संचित करें () - इस फ़ंक्शन के दो पैरामीटर हैं। पहला एक चलने योग्य (सूची, टपल या स्ट्रिंग) है। डिफ़ॉल्ट रूप से दूसरा पैरामीटर है operator.add() (मानक जोड़ ऑपरेटर को लागू करने वाले ऑपरेटर मॉड्यूल में फ़ंक्शन), लेकिन दो संख्यात्मक पैरामीटर प्राप्त करने वाला कोई अन्य फ़ंक्शन हो सकता है।

accumulate(sequence, func)

इनपुट अनुक्रम के पहले दो तत्वों को func द्वारा संसाधित किया जाता है। प्रक्रिया का परिणाम अगले पुनरावृत्ति के लिए पहला पैरामीटर है और func के लिए दूसरा पैरामीटर इनपुट अनुक्रम में तीसरा तत्व है। अनुक्रम समाप्त होने तक यह प्रक्रिया दोहराई जाती है। संचित फ़ंक्शन एक पुनरावर्तक देता है जिसमें प्रत्येक तत्व क्रमिक तत्वों को संसाधित करने का परिणाम संचित होता है।

निम्नलिखित उदाहरण में, सूची में संख्याओं को संचयी रूप से जोड़ा जाता है। ध्यान दें कि डिफ़ॉल्ट फ़ंक्शन तर्क ऑपरेशन जोड़ें है।

>>> from itertools import accumulate
>>> list(accumulate([1,2,3,4,5]))
[1, 3, 6, 10, 15]

हम एक उपयोगकर्ता परिभाषित फ़ंक्शन को दूसरे पैरामीटर के रूप में जमा करने के लिए () फ़ंक्शन कर सकते हैं

>>> def multiply(x,y):
return x*y
>>> list(accumulate([1,2,3,4,5], multiply))
[1, 2, 6, 24, 120]

यह व्यवहार कुछ हद तक अंतर्निहित कम () फ़ंक्शन के समान है। कम () फ़ंक्शन केवल संचय का अंतिम परिणाम देता है, जबकि संचय () सभी मध्यवर्ती परिणामों का पुनरावर्तक बनाता है।

श्रृंखला () - इस फ़ंक्शन में पैरामीटर के रूप में एक से अधिक पुनरावृत्तियां हो सकती हैं। यह पहले पुनरावर्तनीय के प्रत्येक तत्व को परिणामी पुनरावर्तक में उत्पन्न करता है और तब तक आगे बढ़ता है जब तक कि चलने योग्य पैरामीटर समाप्त नहीं हो जाते।

>>> from itertools import chain
>>> list(chain([10,20],'hello',range(4)))
[10, 20, 'h', 'e', 'l', 'l', 'o', 0, 1, 2, 3]

ड्रॉपटाइम () - जब तक विधेय फ़ंक्शन तर्क सत्य लौटाता है, तब तक यह फ़ंक्शन टेरेबल से तत्वों को हटाकर एक पुनरावर्तक देता है। जिस क्षण फ़ंक्शन गलत लौटाता है, शेष सभी तत्व पुनरावर्तक को दिए जाते हैं।

>>> from itertools import dropwhile
>>> def iseven(x):
if x % 2 == 0:
return True
else:
return False
>>> list(dropwhile(iseven, [12,90,61,4,15]))
[61, 4, 15]

फ़िल्टर झूठा () - यह फ़ंक्शन उन तत्वों को फ़िल्टर करके एक पुनरावर्तक देता है जिनके लिए विधेय फ़ंक्शन का परिणाम गलत होता है।

>>> from itertools import filterfalse
>>> def iseven(x):
if x % 2 == 0:
return True
else:
return False
>>> list(filterfalse(iseven, [12,90,61,4,15]))
[61, 15]

इस्लाइस () - यह फ़ंक्शन पुनरावर्तनीय से कुछ तत्वों का चयन करके एक पुनरावर्तक बनाता है। चयन मानदंड स्टार्ट, स्टॉप और स्टेप मापदंडों पर निर्भर करता है। चयन प्रारंभ मूल्य से शुरू होता है और स्टॉप वैल्यू तक जारी रहता है। यदि स्टॉप कोई नहीं है, तो यह चलने योग्य के अंत तक जाता है, अन्यथा चयन निर्दिष्ट इंडेक्स पर रुक जाता है। चरण पैरामीटर डिफ़ॉल्ट रूप से 1 है। चरण पैरामीटर द्वारा तत्वों की वृद्धि का चयन। कोई भी पैरामीटर नकारात्मक नहीं हो सकता।

>>> from itertools import islice
>>> list(islice(range(10),1,5,2))
[1, 3]
>>> list(islice(range(10),0,None,3))
[0, 3, 6, 9]
>>> list(islice(range(10),5,None))
[5, 6, 7, 8, 9]
>>> list(islice(range(10),5))
[0, 1, 2, 3, 4]

निम्नलिखित फ़ंक्शन पुनरावृत्त वस्तुओं से कॉम्बिनेटोरिक इटरेटर उत्पन्न करता है।

उत्पाद () - यह फ़ंक्शन एक पुनरावर्तक उत्पन्न करता है जो इनपुट अनुक्रमों में तत्वों का कार्टेशियन उत्पाद है। यह लूप के लिए नेस्टेड के निर्माण के बराबर है, प्रत्येक चलने योग्य अनुक्रम को ट्रैवर्स करने के लिए एक।

निम्नलिखित उदाहरण में कार्टेशियन उत्पाद बनाने के लिए दो अनुक्रमों पर दो नेस्टेड लूप चलाने के लिए सूची समझ तकनीक का उपयोग किया जाता है।

>>> [[x,y] for x in [1,2,3] for y in ['a','b','c']]
[[1, 'a'], [1, 'b'], [1, 'c'], [2, 'a'], [2, 'b'], [2, 'c'], [3, 'a'], [3, 'b'], [3, 'c']]

उत्पाद () फ़ंक्शन समान परिणाम उत्पन्न करता है

>>> from itertools import product
>>> list(product([1,2,3],['a','b','c']))
[(1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b'), (2, 'c'), (3, 'a'), (3, 'b'), (3, 'c')]

क्रमपरिवर्तन () - यह फ़ंक्शन पुनरावर्तनीय इनपुट में तत्वों के सभी संभावित क्रमपरिवर्तन उत्पन्न करता है। प्रत्येक क्रमपरिवर्तन की लंबाई इस फ़ंक्शन के दूसरे पैरामीटर के रूप में निर्दिष्ट की जा सकती है। यदि निर्दिष्ट नहीं है, तो लंबाई एक है।

>>> list(permutations(range(1,4),2))
[(1, 2), (1, 3), (2, 1), (2, 3), (3, 1), (3, 2)]

संयोजन () - यह फ़ंक्शन पुनरावर्तनीय इनपुट में तत्वों के सभी संभावित संयोजनों को उत्पन्न करता है। प्रत्येक क्रमपरिवर्तन की लंबाई इस फ़ंक्शन के दूसरे पैरामीटर के रूप में निर्दिष्ट की जा सकती है। यदि निर्दिष्ट नहीं है, तो लंबाई एक है।

>>> from itertools import combinations
>>> list(combinations(range(1,4),2))
[(1, 2), (1, 3), (2, 3)]

यह लेख पायथन लाइब्रेरी के इटरटूल मॉड्यूल में परिभाषित विभिन्न इटरेटर टूल्स का परिचय देता है।


  1. पायथन में बेनामी कार्य

    इन कार्यों को अनाम कहा जाता है क्योंकि def कीवर्ड का उपयोग करके उन्हें मानक तरीके से घोषित नहीं किया जाता है। छोटे अनाम फंक्शन बनाने के लिए आप लैम्ब्डा कीवर्ड का उपयोग कर सकते हैं। लैम्ब्डा फॉर्म कितने भी तर्क ले सकते हैं लेकिन अभिव्यक्ति के रूप में सिर्फ एक मान लौटा सकते हैं। उनमें कमांड या एक से

  1. issubset () पायथन में फ़ंक्शन

    इस लेख में, हम पायथन स्टैंडर्ड लाइब्रेरी में उपलब्ध issubset () फ़ंक्शन के कार्यान्वयन और उपयोग के बारे में जानेंगे। issubset() विधि बूलियन ट्रू लौटाती है जब एक सेट के सभी तत्व दूसरे सेट में मौजूद होते हैं (एक तर्क के रूप में पारित) अन्यथा, यह बूलियन गलत देता है। नीचे दिए गए चित्र में B, A का एक उ

  1. इंटरसेक्शन () फ़ंक्शन पायथन

    इस लेख में, हम चौराहे () फ़ंक्शन के बारे में जानेंगे जो किसी दिए गए सेट पर किया जा सकता है। गणित के अनुसार प्रतिच्छेदन का अर्थ है दो समुच्चयों से उभयनिष्ठ तत्वों का पता लगाना। सिंटैक्स <set name>.intersection(<set a1> <set a2> ……..) रिटर्न वैल्यू सेट में सामान्य त