Haklısın! 'example'[3:4]
ve 'example'[3]
temelde farklıdır ve bir dizinin sınırları dışında dilimleme (en azından yerleşik öğeler için) bir hataya neden olmaz.
İlk başta şaşırtıcı gelebilir ama düşündüğünüzde mantıklı geliyor. İndeksleme, tek bir öğeyi döndürür, ancak dilimleme, bir öğe alt dizisini döndürür. Dolayısıyla, var olmayan bir değeri dizine eklemeye çalıştığınızda, döndürülecek bir şey yoktur. Ancak bir diziyi sınırların dışında dilimlediğinizde, yine de boş bir dizi döndürebilirsiniz.
Burada kafa karıştıran şey, dizelerin listelerden biraz farklı davranmasıdır. Bir listeye aynı şeyi yaptığınızda ne olduğuna bakın:
>>> [0, 1, 2, 3, 4, 5][3]
3
>>> [0, 1, 2, 3, 4, 5][3:4]
[3]
Burada fark açıktır. Dizeler söz konusu olduğunda, sonuçlar aynı görünür, çünkü Python'da bir dizenin dışında tek bir karakter diye bir şey yoktur. Tek bir karakter yalnızca 1 karakterlik bir dizedir.
(Bir dizinin aralığının dışında dilimlemenin kesin anlamı için, mgilson'ın cevabına bakın .)
[999:9999]
bir dizin değil, bir dilim ve farklı anlamlara sahip. Python girişinden: "Dilim indeksleri incelikle ele alınır: çok büyük bir indeks, dize boyutuyla değiştirilir, alt sınırdan daha küçük bir üst sınır boş bir dize döndürür."