2012-10-26 13 views
8

दोहराया टुकड़ा करने की क्रिया tuples और सूचियों पर काम करता है ठीक:एक स्ट्रिंग टुकड़ा करने की क्रिया को बार-बार

>>> tuple = ("nav", "yad") 
>>> tuple[0] 
'nav' 
>>> tuple[0][0] 
'n' 

लेकिन तार के साथ:

>>> name="university" 
>>> name[0] 
'u' 

यहाँ अजीब बात है, जब मैं स्ट्रिंग नाम चर से अधिक टुकड़ा करने की क्रिया को दोहराया कोशिश , name[0][0] या name[0][-1] पर कुछ भी नहीं है, तो यह "u" क्यों दिखाता है?

>>> name[0][0] 
'u' 
>>> name[0][-1] 
'u' 

और कुछ तो name[0][0] पर है अगर क्यों अन्य अनुक्रमित पर नहीं?

>>> name[0][1] 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
IndexError: string index out of range 
+0

दोहराया स्लाइसिंग सूचियों की एक विशेषता नहीं है। '[1,2,3] [0] [0]' आज़माएं। –

+0

क्योंकि इंडेक्सिंग (वास्तव में जो उदाहरण मैं इकट्ठा करता हूं उससे टुकड़ा नहीं कर रहा हूं) तारों को आपको तार मिलते हैं - एक चरित्र अजगर में लंबाई की एक स्ट्रिंग है। प्रकार बदलता नहीं है। Tuples/सूचियों के साथ मामला नहीं है। – gorlum0

उत्तर

12

स्ट्रिंग एक अनुक्रम है। एक चरित्र की स्ट्रिंग अभी भी एक तत्व के साथ एक अनुक्रम है। तो एक स्ट्रिंग के साथ आप name[0][0][0][0]... कर सकते हैं और यह ठीक काम करेगा। सूचकांक -1, कि एक दृश्य के अंतिम तत्व देता है के साथ एक ही:

>>> name[0][0] 
'u' 
>>> name[0][0][-1] 
'u' 
>>> name[0][0][-1][-1] 
'u' 

name[0][1] स्पष्ट रूप से विफल रहता है स्ट्रिंग name[0] में केवल एक ही तत्व है, क्योंकि वहाँ।

0

@ रोमन के उत्तर में जोड़ने के लिए। मुझे लगता है कि आप इस धारणा के तहत हैं कि name[0] कुछ प्रकार के char लौटाएगा। लेकिन ऐसा नहीं है। क्या होता है name[0] लंबाई 1 की एक स्ट्रिंग देता है। इसलिए कोई फर्क नहीं पड़ता कि आप 0 के साथ एक खाली खाली स्ट्रिंग को कितनी बार अनुक्रमित करते हैं, यह हमेशा वही देता है।

संबंधित मुद्दे