2012-11-13 17 views
6

मैं सिर्फ निम्नलिखित अजगर कोड है जो मुझे थोड़ी confuses पार आ रहा हूँ। हालांकि, क्या यह self.result [:: - 1] मतलब है, खासकर कोलन?'परिणाम [:: - 1]' का क्या अर्थ है?</p> <pre><code>res = self.result[::-1].encode('hex') </code></pre> <p>एनकोड सामान बहुत स्पष्ट है, यह हेक्स मान के रूप में प्रतिनिधित्व किया जाना चाहिए है:

उत्तर

9

यह परिणाम से लेने के लिए 'टुकड़ा' का प्रतिनिधित्व करता है। पहला तत्व प्रारंभिक स्थिति है, दूसरा अंत (गैर-समावेशी) है और तीसरा चरण है। एक कोलन से पहले/बाद में एक खाली मान इंगित करता है कि आप या तो शुरुआत से शुरू कर रहे हैं (s[:3]) या अंत तक विस्तार (s[3:])। आप यहां वास्तविक संख्या भी शामिल कर सकते हैं, लेकिन संभव होने पर उन्हें छोड़कर अधिक मूर्खतापूर्ण है।

उदाहरण के लिए:

In [1]: s = 'abcdefg' 

वापसी तार का टुकड़ा है कि शुरुआत में शुरू होता है और सूचकांक स्थिति 2 पर रुक जाता है:

In [2]: s[:3] 
Out[2]: 'abc' 

वापसी तार का टुकड़ा है कि तीसरे पर शुरू होता है सूचकांक स्थिति और अंत तक फैली हुई है:

In [3]: s[3:] 
Out[3]: 'defg' 

स्ट्रिंग का टुकड़ा वापस करें कि अंत में शुरू होता है और एक समय में पिछड़े एक तत्व कदम:

In [4]: s[::-1] 
Out[4]: 'gfedcba' 

वापसी तार का टुकड़ा है कि हर दूसरे तत्व शामिल हैं:

In [5]: s[::2] 
Out[5]: 'aceg' 

वे सब एक दूसरे के साथ संयोजन में उपयोग किया जा सकता है भी। यहाँ, हम टुकड़ा है कि हर दूसरे तत्व रिटर्न सूचकांक स्थिति 6 से शुरू होकर सूचकांक स्थिति 2 के लिए जा रहा लौट (ध्यान दें कि s[:2:-2] अधिक मुहावरेदार होगा, लेकिन मैं अक्षरों का एक अजीब संख्या :) उठाया):

In [6]: s[6:2:-2] 
Out[6]: 'ge' 

चरण तत्व तत्वों को वापस करने के लिए निर्धारित करता है। आपके उदाहरण में, -1 इंगित करता है कि यह एक समय में आइटम के माध्यम से पीछे की तरफ कदम उठाएगा।

+0

ग्रेट, यह समझना आसान था। तो अनिवार्य रूप से यह यहां सूचीबद्ध ऑपरेशन की तुलना में कुछ और नहीं है! – Patrick

+0

@ पैट्रिक आपको मिल गया :) आप इसे अक्सर तारों/सूचियों के साथ देखेंगे, और इसका उपयोग सूचियों के मामले में असाइनमेंट के लिए भी किया जा सकता है (उदाहरण के लिए 'एल = [' '', 'दो', तीन ']; एल [: 2] = ['बदल गया'] ')। आशा करता हूँ की ये काम करेगा! – RocketDonkey

2

यह एक आम मुहावरे है जो एक सूची को उलट देता है।

a = ['a', 'b', 'c', 'd'] 
b = a[::-1] 
print b 

['d', 'c', 'b', 'a'] 

आप 'विस्तारित स्लाइस' here के बारे में पढ़ सकते हैं।

+3

शब्दों की दुर्भाग्यपूर्ण पसंद, यह एक सूची को उलट नहीं करता है! 'a.reverse() 'रिवर्स सूची' ए'। 'a [:: - 1]' 'a' की एक उलट प्रतिलिपि देता है। – Junuxx

+1

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