लघु कोड नहीं बेहतर कोड है। लघु कोड तेज कोड नहीं है। शॉर्ट कोड रखरखाव कोड नहीं है। अब, यह कहा गया है, आपके व्यक्तिगत घटकों को संक्षिप्त और सरल बनाने के लिए अच्छा है।
def split_odd_even(number_list):
return {
'odds': filter(lambda n: (n % 2) != 0, number_list),
'evens': filter(lambda n: (n % 2) == 0, number_list)
}
def string_to_ints(string):
return map(int, numbers.strip().split())
numbers = '1 2 3 4 5 6 7 8 9 10'
nums = split_odd_even(string_to_ints(numbers))
print nums
यह मैं देता है::
यहाँ मैं क्या करना होगा है
{'odds': [1, 3, 5, 7, 9], 'evens': [2, 4, 6, 8, 10]}
हालांकि इस कोड वास्तव में लंबाई में कुछ लाइनें जोड़ा गया है, यह बहुत अधिक स्पष्ट क्या कार्यक्रम है बन गया है ऐसा करना, जैसा कि हमने Abstraction लागू किया है और कोड के प्रत्येक घटक को केवल एक चीज ही बनाया है।
हालांकि हम दो काम करता है, कोड के सबसे-दृश्य भाग इस से चला गया है जोड़ दिया है: सिर्फ इन दो पंक्तियों को पढ़ कर
numbers = '1 2 3 4 5 6 7 8 9 10'
nums = split_odd_even(string_to_ints(numbers))
और:
numbers = '1 2 3 4 5 6 7 8'
nums = {'evens': [], 'odds': []}
for number in numbers.split(' '):
if int(number) % 2:
nums['odds'].append(number)
else:
nums['evens'].append(number)
इस के लिए
, हम जानते हैं कि numbers
को स्ट्रिंग से int
एस की सूची में परिवर्तित किया गया है, और फिर हम उन संख्याओं को अजीब और यहां तक कि विभाजित करते हैं, और परिणाम nums
पर असाइन करते हैं।
है कि सभी के लिए परिचित नहीं हो सकता है चीजों में से आ जोड़ी व्याख्या करने के लिए:
map()
में हर आइटम के लिए एक फ़ंक्शन को कॉल एक list
(या tuple
या अन्य iterable), और के साथ एक नई सूची लौटाता है प्रत्येक आइटम पर फ़ंक्शन का परिणाम कहा जा रहा है। इस मामले में, हम सूची में प्रत्येक आइटम पर int()
पर कॉल करने के लिए इसका उपयोग करते हैं।
filter()
एक list
(या tuple
या अन्य iterable) है, जो True
या False
रिटर्न प्रत्येक आइटम (अच्छी तरह से, truthy or falsey) के लिए, और उस True
के लिए मूल्यांकन मदों की एक सूची जब समारोह में हर आइटम के लिए एक समारोह कॉल कहा जाता है।
लैम्ब्डा अभिव्यक्तियां (lambda
) "मिनी-फ़ंक्शंस" जैसी हैं जो तर्क लेती हैं और जगह बनाई जा सकती हैं।
पूरा क्या? –
आपका कोड समझना आसान है और केवल लंबी लाइनों का एक मुट्ठी भर है। यह पायथन कोडिंग के मूल निर्माण ब्लॉक का उपयोग करता है। मैं वास्तव में इसे कुछ अधिक गूढ़ उत्तरों के लिए पसंद करता हूं –