तुम सही हो! 'example'[3:4]
और 'example'[3]
मौलिक रूप से अलग हैं, और एक अनुक्रम की सीमा के बाहर स्लाइसिंग (कम से कम बिल्ट-इन के लिए) त्रुटि का कारण नहीं है।
यह पहली बार में आश्चर्यजनक हो सकता है, लेकिन जब आप इसके बारे में सोचते हैं तो यह समझ में आता है। इंडेक्सिंग किसी एक आइटम को लौटाता है, लेकिन स्लाइसिंग के बाद आइटम की वापसी होती है। इसलिए जब आप एक शून्य मान को अनुक्रमित करने का प्रयास करते हैं, तो लौटने के लिए कुछ भी नहीं होता है। लेकिन जब आप किसी क्रम को सीमा से बाहर कर देते हैं, तब भी आप एक खाली क्रम वापस कर सकते हैं।
यहाँ क्या भ्रमित किया जा रहा है इसका एक हिस्सा सूचियों से थोड़ा अलग व्यवहार करता है। जब आप सूची में समान कार्य करते हैं तो देखें:
>>> [0, 1, 2, 3, 4, 5][3]
3
>>> [0, 1, 2, 3, 4, 5][3:4]
[3]
यहाँ अंतर स्पष्ट है। स्ट्रिंग्स के मामले में, परिणाम समान प्रतीत होते हैं क्योंकि पायथन में, स्ट्रिंग के बाहर व्यक्तिगत चरित्र जैसी कोई चीज नहीं है। एक एकल चरित्र सिर्फ 1-वर्ण स्ट्रिंग है।
(एक अनुक्रम की सीमा के बाहर टुकड़ा करने के सटीक शब्दार्थ के लिए, mgilson का उत्तर देखें ।)
[999:9999]
एक सूचकांक नहीं है, यह एक टुकड़ा है, और अलग शब्दार्थ है। अजगर इंट्रो से: "पतले स्लाइस इंडेक्स को इनायत से संभाला जाता है: एक इंडेक्स जो बहुत बड़ा होता है, उसे स्ट्रिंग साइज से बदल दिया जाता है, जो निचले बाउंड की तुलना में एक ऊपरी बाउंड एक खाली स्ट्रिंग देता है।"