यहां 11 युक्तियां और तरकीबें दी गई हैं जो आपको बेहतर पायथन कोड लिखने और एक बेहतर प्रोग्रामर बनने में मदद करेंगी:
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
की तुलना में अधिक कुशल है क्योंकि यह आपको लूप के अंदर मूल्य तक पहुंचने और इसे सही ढंग से उपयोग करने के लिए याद रखने की परेशानी से बचाता है और फिर लूप वैरिएबल के मूल्य को आगे बढ़ाने के लिए भी याद रखता है, यह सब पाइथन द्वारा स्वचालित रूप से नियंत्रित किया जाता है .
सूची समझ मौजूदा सूचियों के आधार पर एक सूची बनाने को परिभाषित करने का एक आसान और सुरुचिपूर्ण तरीका है। वे कोड की केवल एक पंक्ति हैं जिसमें अभिव्यक्ति वाले ब्रैकेट होते हैं जिन्हें बार-बार प्रत्येक पुनरावृत्ति पर निष्पादित किया जाता है। इसलिए, वे लूप की तुलना में अधिक समय और स्थान कुशल हैं और कोड की एक पंक्ति में पुनरावृत्त कथनों को बदलते हैं।
सूची बोध का सामान्य सिंटैक्स इस तरह दिखता है:
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']
sorted()
पायथन sorted()
फ़ंक्शन एक विशिष्ट क्रम (आरोही या अवरोही) में एक पुनरावृत्त वस्तु के तत्वों को क्रमबद्ध करता है और उन्हें एक क्रमबद्ध सूची के रूप में लौटाता है। इसका उपयोग अनुक्रम (स्ट्रिंग, टपल, सूची) या संग्रह (सेट, शब्दकोश, जमे हुए सेट) या किसी अन्य पुनरावर्तक को सॉर्ट करने के लिए किया जा सकता है।
sorted()
फ़ंक्शन का सिंटैक्स इस प्रकार है:
sorted(iterable, key=None, reverse=False)
sorted()
फ़ंक्शन अधिकतम तीन पैरामीटर लेता है:
एक पायथन सेट इसमें डुप्लिकेट मानों की एक प्रति संग्रहीत करता है। इसलिए, इसका उपयोग किसी सूची में अद्वितीय मानों की जांच के लिए किया जा सकता है। उदाहरण के लिए:
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
जनरेटर का मूल कार्य मांग पर तत्वों का मूल्यांकन करना है। यह सूची बोध के लिए वाक्य रचना के समान है, जहां वर्ग कोष्ठक के बजाय, हम कोष्ठक का उपयोग करते हैं।
आइए एक उदाहरण पर विचार करें जहां हम एक सूची में सभी सम संख्याओं के वर्ग को प्रिंट करना चाहते हैं:
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
यह कहने के बाद कि उनका सिंटैक्स सूची समझ के समान है, आप सोच रहे होंगे कि यह सूची या सेट समझ से कैसे अलग है। सूची या सेट समझ के विपरीत, जनरेटर की समझ किसी भी वस्तु को प्रारंभ नहीं करती है। नतीजतन, आप प्रोग्राम की मेमोरी आवश्यकताओं को कम करने के लिए सूची या सेट समझ के बजाय जनरेटर समझ का उपयोग कर सकते हैं।
.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}
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
f-strings, जिसे "स्वरूपित स्ट्रिंग अक्षर" भी कहा जाता है, स्ट्रिंग्स को प्रारूपित करने का एक नया और अधिक पाइथोनिक तरीका है, जो Python 3.6+ द्वारा समर्थित है। वे पाइथन में स्ट्रिंग स्वरूपण का एक तेज़, अधिक पठनीय, अधिक संक्षिप्त, और कम त्रुटि प्रवण तरीका हैं।
जैसा कि "एफ-स्ट्रिंग" नाम कहता है, वे स्ट्रिंग अक्षर हैं जिनमें शुरुआत में एफ और अभिव्यक्ति वाले घुंघराले ब्रेसिज़ होते हैं जिन्हें रनटाइम पर उनके मूल्यों से बदल दिया जाएगा और फिर __format__
प्रोटोकॉल का उपयोग करके स्वरूपित किया जाएगा।
एफ-स्ट्रिंग्स का उपयोग निम्नलिखित के रूप में किया जा सकता है:
name = "Eric" age = 74 print(f"Hello, {name}. You are {age}.") # 'Hello, Eric. You are 74.'
.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
{**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}
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")
पायथन एक व्यापक रूप से उपयोग की जाने वाली प्रोग्रामिंग भाषा है और उपरोक्त युक्तियों और युक्तियों का उपयोग करके आप एक बेहतर पायथन प्रोग्रामर बन सकते हैं।
मुझे उम्मीद है कि यह लेख मददगार था। पढ़ते रहिये!