Why substring slicing index out of range works in Python?


Slicing is a technique in Python used to extract a portion of a sequence, such as a string, list, or tuple. Slicing involves specifying the start and end indices of the sequence, and the resulting slice will contain all elements from the start index up to (but not including) the end index.

Slicing in Python is denoted by using square brackets [] and providing the start and end indices separated by a colon ‘:’. If the start index is omitted, it is assumed to be 0, and if the end index is omitted, it is assumed to be the length of the sequence.

For example, let's say we have a string text containing the word "Python":

To extract the first three characters of this string using slicing, we can use the following code:

Example

text = "Python"
first_three = text[0:3]
print(first_three)

Output

Pyt

We can also use negative indices in slicing to count from the end of the sequence. For example, to extract the last two characters of the string text, we can use the following code:

Here, text[−2:] means "take a slice of the string text starting at the second−to−last character and ending at the end of the string."

Example

text = "Python"
last_two = text[-2:]
print(last_two)

Output

on

Slicing can also be used to extract every nth element from a sequence. For example, to extract every other character from the string text, we can use the following code:

Here, text[::2] means "take a slice of the string text starting at the beginning of the string and ending at the end of the string, but only include every second character."

Example

text = "Python"
every_other = text[::2]
print(every_other)

Output

Pto

In Python, slicing a substring with an index that is out of range does not result in an error. Instead, it will return an empty string or a partial substring, depending on the circumstances. This might seem strange at first, but it can be useful in certain situations.

Here are some examples to help explain why this works:

Slicing with an out of range start index

Example

In this example, we are slicing the string text starting at index 20. Since the length of text is only 11 characters, there is no character at index 20. Instead of giving an error, Python returns an empty string.

text = "Lorem Ipsum"
substring = text[20:]
print(substring) 

Slicing with an out of range end index

Example

In this example, we are slicing the string text up to index 20. Since the length of text is only 12 characters, there are not enough characters to reach index 20. Instead of giving an error, Python returns the entire string.

text = "Lorem Ipsum"
substring = text[:20]
print(substring)  

Output

Lorem Ipsum

Slicing with an out of range step index

Example

In this example, we are slicing the string text with a step index of 20. Since there are not enough characters in the string to make a full step of 20, Python returns a partial substring.

text = "Lorem Ipsum"
substring = text[::20]
print(substring)  

Output

L

Example

In this example, we're trying to slice a substring from index 3 to 15, but the string text only has 11 characters. However, Python doesn't raise an error and instead returns the substring from index 3 to the end of the string.

text = "Lorem Ipsum"
substring = text[3:15]
print(substring)

Output

em Ipsum

Example

In this example, we're trying to slice a substring from index 15 to 20, but the string text only has 11 characters. Since the end index is out of range, Python returns an empty string.

text = "Lorem Ipsum"


substring = text[15:20]
print(substring)

Example

In this example, we're trying to slice a substring from the index −5 to 15. Negative indices in Python count from the end of the string, so −5 refers to the 5th character from the end of the string. Since the start index is within range and the end index is out of range, Python returns the substring from the start index to the end of the string.

text = "Lorem Ipsum"
substring = text[-5:15]
print(substring)

Output

Ipsum

In summary, slicing with an index that is out of range does not cause an error in Python because it can be useful in certain situations. However, it is important to be aware of this behavior when working with strings in Python to avoid unexpected results.

Updated on: 11-Aug-2023

1K+ Views

Kickstart Your Career

Get certified by completing the course

Get Started
Advertisements