ถูกต้อง! 'example'[3:4]
และ'example'[3]
มีความแตกต่างกันโดยพื้นฐานและการแบ่งส่วนนอกขอบเขตของลำดับ (อย่างน้อยสำหรับบิวด์อิน) จะไม่ทำให้เกิดข้อผิดพลาด
ในตอนแรกมันอาจจะน่าแปลกใจ แต่มันก็สมเหตุสมผลเมื่อคุณคิดถึงมัน การจัดทำดัชนีจะส่งคืนรายการเดียว แต่การแบ่งส่วนจะส่งกลับรายการตามมา ดังนั้นเมื่อคุณพยายามจัดทำดัชนีค่าที่ไม่มีอยู่จริงจะไม่มีสิ่งใดส่งกลับ แต่เมื่อคุณแบ่งลำดับนอกขอบเขตคุณยังสามารถส่งคืนลำดับว่างได้
ส่วนหนึ่งของสิ่งที่ทำให้สับสนที่นี่คือสตริงทำงานแตกต่างจากรายการเล็กน้อย ดูว่าจะเกิดอะไรขึ้นเมื่อคุณทำสิ่งเดียวกันกับรายการ:
>>> [0, 1, 2, 3, 4, 5][3]
3
>>> [0, 1, 2, 3, 4, 5][3:4]
[3]
นี่คือความแตกต่างที่ชัดเจน ในกรณีของสตริงผลลัพธ์จะเหมือนกันเนื่องจากใน Python ไม่มีสิ่งที่เรียกว่าอักขระแต่ละตัวนอกสตริง อักขระเดี่ยวเป็นเพียงสตริง 1 อักขระ
(สำหรับความหมายที่แน่นอนของการหั่นนอกช่วงของลำดับโปรดดูคำตอบของ mgilson )
[999:9999]
ไม่ใช่ดัชนี แต่เป็นชิ้นส่วนและมีความหมายที่แตกต่างกัน จากคำนำ python: "ดัชนีชิ้นส่วนที่เสื่อมสภาพได้รับการจัดการอย่างสง่างาม: ดัชนีที่ใหญ่เกินไปจะถูกแทนที่ด้วยขนาดสตริงขอบเขตบนที่เล็กกว่าขอบเขตล่างจะส่งคืนสตริงว่าง"