यह पहले ही सही ढंग से उत्तर दिया गया है: list.sort()
None
देता है। कारण है कि "कमांड-क्वेरी पृथक्करण" है:
http://en.wikipedia.org/wiki/Command-query_separation
अजगर रिटर्न None
हर कार्य कुछ लौटना चाहिए क्योंकि, और परंपरा है कि एक समारोह है कि किसी भी उपयोगी मूल्य का उत्पादन नहीं करता None
लौट जाना है।
मैंने कभी भी संदर्भ के बाद एक टिप्पणी डालने के अपने सम्मेलन को कभी नहीं देखा है, लेकिन रेखा पर इंगित करने के लिए एक कैरेट के साथ टिप्पणी शुरू कर दी है। कृपया संदर्भित लाइनों से पहले टिप्पणियां दें।
जबकि आप .pop()
विधि का उपयोग कर सकते हैं, तो आप सूची को सूचीबद्ध भी कर सकते हैं। सूची में अंतिम मान हमेशा -1
के साथ अनुक्रमित किया जा सकता है, क्योंकि पायथन नकारात्मक सूचकांक में "चारों ओर लपेटें" और अंत में सूचकांक पिछड़ा हुआ है।
लेकिन हम और भी सरल बना सकते हैं। सूची को सॉर्ट करने का एकमात्र कारण यह है कि आप इसका अधिकतम मूल्य पा सकते हैं। इसके लिए पाइथन में एक अंतर्निहित फ़ंक्शन है: max()
list.sort()
का उपयोग करके पूरी सूची बनाना आवश्यक है। फिर आप सूची से एक मूल्य खींचेंगे और इसे छोड़ देंगे। max()
सूची को स्टोर करने के लिए संभावित रूप से बड़ी मात्रा में स्मृति आवंटित करने की आवश्यकता के बिना एक पुनरावर्तक का उपभोग करेगा।
इसके अलावा, पायथन में, समुदाय पीईपी 8 नामक कोडिंग मानक का उपयोग पसंद करता है। पीईपी 8 में, आपको फ़ंक्शन नामों के लिए लोअर-केस का उपयोग करना चाहिए, और कैमेलकेस की बजाय शब्दों को अलग करने के लिए अंडरस्कोर का उपयोग करना चाहिए।
http://www.python.org/dev/peps/pep-0008/
ध्यान में टिप्पणी के साथ, यहाँ समारोह की मेरी पुनर्लेखन है:
def longest_path(T):
paths = [Ancestors(T,x) for x in OrdLeaves(T)]
return max(len(path) for path in paths)
कॉल अंदर
max()
करने के लिए
हम एक "जनरेटर अभिव्यक्ति" कि प्रत्येक मान के लिए लंबाई की गणना करता है सूची में paths
। max()
इस मूल्य से मूल्य खींचेंगे, सबसे बड़ा रखते हुए, जब तक कि सभी मान समाप्त न हों।
लेकिन अब यह स्पष्ट है कि हमें वास्तव में paths
सूची की भी आवश्यकता नहीं है। यहाँ अंतिम संस्करण है:
def longest_path(T):
return max(len(Ancestors(T, x)) for x in OrdLeaves(T))
मैं वास्तव में लगता है कि स्पष्ट paths
चर के साथ संस्करण में थोड़ा और अधिक पठनीय है, लेकिन इस भयानक नहीं है, और अगर वहाँ रास्तों में से एक बड़ी संख्या में हो सकता है, यदि आप एक नज़र आ सकते हैं paths
सूची को बनाने और नष्ट करने के कारण प्रदर्शन सुधार।
कोई कारण नहीं है कि आप ['अधिकतम()'] (http://docs.python.org/py3k/library/functions.html#max) का उपयोग नहीं कर रहे हैं? –
एचसी_, जब मुझे लगता है कि मुझे 'एट्रिब्यूट एरर:' सूची 'ऑब्जेक्ट में कोई विशेषता नहीं है' max'' – Btuman
ऐसा इसलिए है क्योंकि 'अधिकतम() 'एक कार्य है, न कि' सूची 'विधि। – kindall