paint-brush
बेहतर पायथन कोड लिखने के लिए 11 टिप्स और ट्रिक्सद्वारा@pragativerma
2,264 रीडिंग
2,264 रीडिंग

बेहतर पायथन कोड लिखने के लिए 11 टिप्स और ट्रिक्स

द्वारा Pragati Verma8m2022/08/16
Read on Terminal Reader
Read this story w/o Javascript

बहुत लंबा; पढ़ने के लिए

पायथन आम तौर पर एक पुनरावृत्त वस्तु पर पुनरावृति करने के लिए `फॉर` लूप का उपयोग करता है। लेकिन 'फॉर' लूप के बजाय 'एन्यूमरेट()' का उपयोग करके ऐसा करने का एक आसान और अधिक पाइथोनिक तरीका है। लूप के लिए कच्चे के बजाय सूची समझ मौजूदा सूचियों के आधार पर सूचियां बनाने का एक तरीका है। इसका उपयोग क्रमबद्ध सूची या अनुक्रम (टुपल, सेट, फ्रोजन सेट) या संग्रह (जमे हुए सेट) में तत्वों को सॉर्ट करने के लिए किया जा सकता है सूची समझ का सिंटैक्स इस तरह दिखता है: 'हैकरनून'

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - बेहतर पायथन कोड लिखने के लिए 11 टिप्स और ट्रिक्स
Pragati Verma HackerNoon profile picture


यहां 11 युक्तियां और तरकीबें दी गई हैं जो आपको बेहतर पायथन कोड लिखने और एक बेहतर प्रोग्रामर बनने में मदद करेंगी:


1. इसके बजाय गणना या range(len(x))

पायथन में, हम आम तौर पर एक पुनरावृत्त वस्तु पर पुनरावृति करने for लूप के लिए उपयोग करते हैं। पायथन में लूप के for संग्रह आधारित पुनरावृत्ति का उपयोग करता है यानी पायथन प्रत्येक पुनरावृत्ति पर एक पुनरावृत्त से लूप चर के लिए अगला आइटम निर्दिष्ट करता है। लूप के for सामान्य उपयोगकेस इस प्रकार है:


 values = ["a", "b", "c"] for value in values: print(value) # a # b # c


अब, यदि मूल्य के अतिरिक्त, आप इंडेक्स को भी प्रिंट करना चाहते हैं, तो आप इसे इस तरह कर सकते हैं:


 index = 0 for value in values: print(index, value) index += 1 # 0 a # 1 b # 2 c


या ऐसा करने का एक और आम तरीका range(len(x)) का उपयोग कर रहा है:


 for index in range(len(values)): value = values[index] print(index, value) # 0 a # 1 b # 2 c


हालांकि, enumerate() का उपयोग करके पुनरावृत्त वस्तुओं पर पुनरावृति करने का एक आसान और अधिक पाइथोनिक तरीका है। इसका उपयोग लूप for लगभग उसी तरह किया जाता है जैसे आप सामान्य तरीके से for हैं, लेकिन लूप in सीधे चलने योग्य वस्तु को डालने के बजाय, या इसे range(len(values)) के रूप में उपयोग करने के बजाय, आप इसे अंदर डालते हैं enumerate() के कोष्ठक जैसा कि नीचे दिखाया गया है:


 for count, value in enumerate(values): print(count, value) # 0 a # 1 b # 2 c


हम नीचे दिखाए गए अनुसार enumerate() के लिए एक start तर्क को भी परिभाषित कर सकते हैं:


 for count, value in enumerate(values, start=1): print(count, value) # 1 a # 2 b # 3 c


enumerate() फ़ंक्शन दो चर वापस देता है:

  • वर्तमान पुनरावृत्ति की गिनती
  • वर्तमान पुनरावृत्ति पर आइटम का मूल्य


लूप के for लूप वेरिएबल्स की तरह, लूप वेरिएबल्स को कुछ भी नाम दिया जा सकता है, उदाहरण के लिए, हम तब index और value को कॉल कर सकते हैं और वे अभी भी काम करेंगे। enumerate() लूप के for की तुलना में अधिक कुशल है क्योंकि यह आपको लूप के अंदर मूल्य तक पहुंचने और इसे सही ढंग से उपयोग करने के लिए याद रखने की परेशानी से बचाता है और फिर लूप वैरिएबल के मूल्य को आगे बढ़ाने के लिए भी याद रखता है, यह सब पाइथन द्वारा स्वचालित रूप से नियंत्रित किया जाता है .


2. लूप के लिए कच्चे के बजाय सूची समझ का प्रयोग करें

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


सूची बोध का सामान्य सिंटैक्स इस तरह दिखता है:


 newList = [ expression(element) for element in oldList if condition ]


कोड में सूची समझ का एक उदाहरण यहां दिया गया है:


 # Using list comprehension to iterate through loop List = [character for character in 'HackerNoon'] # Displaying list print(List) # Output # ['H', 'a', 'c', 'k', 'e', 'r', 'N', 'o', 'o', 'n']


3. क्रमबद्ध के साथ जटिल पुनरावृत्तियों को छाँटें sorted()

पायथन sorted() फ़ंक्शन एक विशिष्ट क्रम (आरोही या अवरोही) में एक पुनरावृत्त वस्तु के तत्वों को क्रमबद्ध करता है और उन्हें एक क्रमबद्ध सूची के रूप में लौटाता है। इसका उपयोग अनुक्रम (स्ट्रिंग, टपल, सूची) या संग्रह (सेट, शब्दकोश, जमे हुए सेट) या किसी अन्य पुनरावर्तक को सॉर्ट करने के लिए किया जा सकता है।


sorted() फ़ंक्शन का सिंटैक्स इस प्रकार है:


 sorted(iterable, key=None, reverse=False)


sorted() फ़ंक्शन अधिकतम तीन पैरामीटर लेता है:

  • चलने योग्य: यह कोई भी पुनरावर्तक हो सकता है
  • कुंजी: यह एक वैकल्पिक तर्क है जो सॉर्ट तुलना के लिए एक कुंजी के रूप में कार्य करता है।
  • रिवर्स: यह एक वैकल्पिक तर्क भी है जिसका उपयोग आउटपुट के रूप में उलटी क्रमबद्ध सूची को निर्दिष्ट करने के लिए किया जाता है


4. सेट के साथ अद्वितीय मूल्यों को स्टोर करें

एक पायथन सेट इसमें डुप्लिकेट मानों की एक प्रति संग्रहीत करता है। इसलिए, इसका उपयोग किसी सूची में अद्वितीय मानों की जांच के लिए किया जा सकता है। उदाहरण के लिए:


 list_inp = [100, 75, 100, 20, 75, 12, 75, 25] set_res = set(list_inp) print("The unique elements of the input list using set():\n") list_res = (list(set_res)) for item in list_res: print(item)


तो उपरोक्त कार्यक्रम का आउटपुट इस तरह दिखेगा:


 The unique elements of the input list using set(): 25 75 100 20 12


5. जेनरेटर के साथ मेमोरी सेव करें

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


आइए एक उदाहरण पर विचार करें जहां हम एक सूची में सभी सम संख्याओं के वर्ग को प्रिंट करना चाहते हैं:


 myList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] print("The given list is:", myList) mygen = (element ** 2 for element in myList if element % 2 == 0) print("Elements obtained from the generator are:") for ele in mygen: print(ele)


उपरोक्त कोड का आउटपुट इस तरह दिखेगा:


 The given list is: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] Elements obtained from the generator are: 4 16 36 64 100


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


6. शब्दकोशों में .get() और .setdefault() के साथ डिफ़ॉल्ट मानों को परिभाषित करें


.setdefault() विधि तानाशाही dict[key]=default सेट करने की अनुमति देती है यदि कुंजी पहले से ही तानाशाही में नहीं है।


.setdefault() का सिंटैक्स निम्न जैसा दिखता है:


 dict.setdefault(key, default=None)


.setdefault() का उपयोग करने के तरीके को समझने के लिए यहां एक उदाहरण कोड स्निपेट दिया गया है:


 a_dictionary = {"a": 1, "b": 2, "d": 4} a_dictionary.setdefault("c", 3) print(a_dictionary)


उपरोक्त कोड का आउटपुट इस तरह दिखेगा:


 {'a': 1, 'b': 2, 'd': 4, 'c': 3}


कुंजी के लिए एक डिफ़ॉल्ट मान पास करके .get() विधि का उपयोग करके भी यही बात हासिल की जा सकती है, जैसा कि आप नीचे देख सकते हैं:


 a_dictionary = {"a": 1, "b": 2, "d": 4} print(a_dictionary.get("c", 3)) print(a_dictionary)


उपरोक्त कोड का आउटपुट निम्न जैसा दिखेगा:


 3 {'a': 1, 'b': 2, 'd': 4}


7. collections.Counter के साथ हैश करने योग्य वस्तुओं की गणना करें। काउंटर

संग्रह मॉड्यूल उच्च-प्रदर्शन कंटेनर डेटाटाइप का समर्थन करता है (अंतर्निहित प्रकार की सूची, तानाशाही और टपल के अलावा) और मेमोरी में जानकारी संग्रहीत करने के लिए कई उपयोगी डेटा संरचनाएं शामिल हैं।


एक काउंटर एक कंटेनर है जो बराबर मूल्यों को जोड़े जाने की संख्या का ट्रैक रखता है।

इसका उपयोग उसी एल्गोरिदम को लागू करने के लिए किया जा सकता है जो अन्य भाषाएं बैग या मल्टीसेट डेटा संरचनाओं को लागू करने के लिए नियोजित करती हैं।


आयात संग्रह संग्रह में सामग्री को इस प्रकार उपलब्ध कराता है:

 import collections


चूंकि हम केवल काउंटर का उपयोग करने जा रहे हैं, हम बस यह कर सकते हैं:


 from collections import Counter


इसका उपयोग इस प्रकार किया जा सकता है:


 import collections c = collections.Counter('abcdaab') for letter in 'abcde': print '%s : %d' % (letter, c[letter])


उपरोक्त कोड का आउटपुट इस तरह दिखेगा:


 a : 3 b : 2 c : 1 d : 1 e : 0


8. f-Strings के साथ स्ट्रिंग्स को प्रारूपित करें (पायथन 3.6+)

f-strings, जिसे "स्वरूपित स्ट्रिंग अक्षर" भी कहा जाता है, स्ट्रिंग्स को प्रारूपित करने का एक नया और अधिक पाइथोनिक तरीका है, जो Python 3.6+ द्वारा समर्थित है। वे पाइथन में स्ट्रिंग स्वरूपण का एक तेज़, अधिक पठनीय, अधिक संक्षिप्त, और कम त्रुटि प्रवण तरीका हैं।


जैसा कि "एफ-स्ट्रिंग" नाम कहता है, वे स्ट्रिंग अक्षर हैं जिनमें शुरुआत में एफ और अभिव्यक्ति वाले घुंघराले ब्रेसिज़ होते हैं जिन्हें रनटाइम पर उनके मूल्यों से बदल दिया जाएगा और फिर __format__ प्रोटोकॉल का उपयोग करके स्वरूपित किया जाएगा।


एफ-स्ट्रिंग्स का उपयोग निम्नलिखित के रूप में किया जा सकता है:


 name = "Eric" age = 74 print(f"Hello, {name}. You are {age}.") # 'Hello, Eric. You are 74.'


9. .join() के साथ तार जोड़ना

पायथन में, हम स्ट्रिंग्स की सूची को एक स्ट्रिंग में जोड़ने के लिए .join() विधि का उपयोग कर सकते हैं। इस विधि के लिए सामान्य सिंटैक्स नीचे जैसा दिखता है:


 'String to insert'.join([List of strings])


इसका उपयोग कई तरीकों से किया जा सकता है - यदि आप खाली स्ट्रिंग ““ का उपयोग करते हैं, तो [स्ट्रिंग्स की सूची] को बस संयोजित किया जाता है, और यदि आप अल्पविराम का उपयोग करते हैं, तो अल्पविराम-सीमांकित स्ट्रिंग बनाई जाती है। जब न्यूलाइन कैरेक्टर \n का उपयोग किया जाता है, तो प्रत्येक स्ट्रिंग के बाद एक नई लाइन जोड़ दी जाती है। नीचे दिया गया उदाहरण देखें:


 l = ['aaa', 'bbb', 'ccc'] s = ''.join(l) print(s) # aaabbbccc s = ','.join(l) print(s) # aaa,bbb,ccc s = '-'.join(l) print(s) # aaa-bbb-ccc s = '\n'.join(l) print(s) # aaa # bbb # ccc


10. शब्दकोशों को {**d1, **d2} के साथ मिलाएं (पायथन 3.5+)

शब्दकोशों को मर्ज करने का सबसे आसान तरीका अनपैकिंग ऑपरेटर ( ** ) का उपयोग करना है। इस विधि का सिंटैक्स इस तरह दिखता है:


 {**dict1, **dict2, **dict3}


इस विधि को बेहतर ढंग से समझने के लिए यहां एक उदाहरण दिया गया है:


 d1 = {'k1': 1, 'k2': 2} d2 = {'k3': 3, 'k4': 4} print({**d1, **d2}) # {'k1': 1, 'k2': 2, 'k3': 3, 'k4': 4}


11. if-statement को if x in list सरल बनाएं

मान लें कि हमारे पास प्राथमिक रंगों लाल, हरे और नीले रंग के साथ एक सूची है। और कहीं न कहीं हमारे कोड में, हमारे पास एक रंग के साथ एक नया चर है, इसलिए c = लाल। फिर हम देखेंगे कि क्या यह हमारे प्राथमिक रंगों में से एक है। बेशक, हम इसे अपनी सूची में प्रत्येक आइटम के खिलाफ निम्नानुसार जांच सकते हैं:


 colors = ["red", "green", "blue"] c = "red" # cumbersome and error-prone if c == "red" or c == "green" or c == "blue": print("is main color")


हालाँकि, यह काफी समय लेने वाला हो सकता है, और हम आसानी से गलतियाँ कर सकते हैं, जैसे कि अगर हमारे यहाँ लाल रंग के लिए एक टाइपो है। यदि सूची में x है तो केवल अभिव्यक्ति का उपयोग करना अधिक सरल और बेहतर है:


 colors = ["red", "green", "blue"] c = "red" # better: if c in colors: print("is main color")


निष्कर्ष

पायथन एक व्यापक रूप से उपयोग की जाने वाली प्रोग्रामिंग भाषा है और उपरोक्त युक्तियों और युक्तियों का उपयोग करके आप एक बेहतर पायथन प्रोग्रामर बन सकते हैं।


मुझे उम्मीद है कि यह लेख मददगार था। पढ़ते रहिये!