एक बात मैं अपने उदाहरण कोड में बदल सकता है: आप इस तरह के self.memberlist
से अधिक के रूप में कुछ लंबे नाम का उपयोग करने जा रहे हैं एक बार फिर, यह अक्सर छोटे नाम के लिए उपनाम ("असाइन") के लिए अधिक पठनीय है। इतने लंबे समय, मुश्किल से पढ़ा के बजाय उदाहरण के लिए:
self.memberlist[someindexA], self.memberlist[someindexB] = self.memberlist[someindexB], self.memberlist[someindexA]
आप कोड किए जा सकेंगे:
L = self.memberlist
L[someindexA], L[someindexB] = L[someindexB], L[someindexA]
कि अजगर द्वारा-संदर्भ काम करता है याद रखें तो एल self.memberlist
के रूप में बिल्कुल एक ही वस्तु को संदर्भित करता है, एक प्रति नहीं (उसी टोकन द्वारा, असाइनमेंट बेहद तेज़ है चाहे कोई भी सूची कितनी देर तक हो, क्योंकि यह किसी भी तरह की प्रतिलिपि नहीं है - यह केवल एक और संदर्भ है)।
मुझे नहीं लगता कि किसी भी आगे की जटिलता न्यायसंगत न हो, हालांकि निश्चित रूप से कुछ फैंसी लोगों को आसानी से, इस तरह के रूप में कल्पना की जा सकता है (एक के लिए, ख "सामान्य" सूचकांक >=0
):
def slicer(a, b):
return slice(a, b+cmp(b,a), b-a), slice(b, a+cmp(a,b), a-b)
back, forth = slicer(someindexA, someindexB)
self.memberlist[back] = self.memberlist[forth]
मैं लगाना लगता है "उन्नत" के इन प्रकार के बाहर का उपयोग करता है एक अच्छा दंभ, उपयोगी मानसिक व्यायाम, और अच्छा मज़ा है - मेरा सुझाव है कि रुचि पाठकों, एक बार सामान्य विचार स्पष्ट है, उन +cmp
की भूमिका पर ध्यान केंद्रित करने और अपने काम में कैसे वे चीजों को बनाने के तीन संभावनाएं (एक> ख, एक < ख, एक == ख) [[नहीं नकारात्मक सूचकांक के लिए, यद्यपि - क्यों नहीं, और कैसे स्लाइसर हैं बदलने के लिए इसे ठीक करने] की जरूरत है?]। लेकिन उत्पादन कोड में इस तरह के एक फैंसी दृष्टिकोण का उपयोग आमतौर पर अधिक कठिन और काफी अनचाहे होगा, जिससे चीजों को सरल और सीधा दृष्टिकोण से बनाए रखने के लिए कठिन और कठिन बना दिया जाता है।
याद रखें, simple is better than complex!
मैं - [1 ::]
myarr [:: 2] = myarr [2]
आप क्या पसंद नहीं करते? इसके साथ गलत क्या है? आपको क्या पसंद आएगा जो संभवतः छोटा हो सकता है? क्या आप छद्म कोड प्रदान कर सकते हैं जो आपको लगता है कि बेहतर होगा? –
यह प्रत्येक अभिव्यक्ति को दोहराने के लिए एक स्वैप लिखने का एक भयानक तरीका है, लेकिन यह सबसे अच्छा पायथन कर सकता है। सी ++ के स्वैप (क, ख) स्वच्छ, स्वैप करने का गैर दोहराए तरीका है, लेकिन अजगर अविवेक के उस स्तर का समर्थन नहीं करता, तो यह ऐसा नहीं कर सकते। बस रहने के लिए कुछ; प्रत्येक भाषा की इसकी सीमाएं होती हैं, और यह एक मामूली है। –