On 2017-12-04 21:22, Jason Maldonis wrote:

>> This is explained in the Python tutorial for strings
>> https://docs.python.org/3/tutorial/introduction.html#strings, as a list
>> is a sequence just like a string it will act in exactly the same way.
>>
>
> The only relevant bit I found in that link is:  "However, out of range
> slice indexes are handled gracefully when used for slicing".  I do
> understand _how_ slices work, but I would really like to know a bit more
> about why slices will never throw out-of-bounds IndexErrors.

That's what "handled gracefully" means. Instead of throwing, they get
clamped.

ChrisA


Cool! Why?   I know I'm being a bit pedantic here, but I truly would like
to understand _why_ slices get clamped.  I've been writing python code
every day for almost 7 years, so usually I can figure stuff like this out,
but I'm struggling here and would really appreciate some insight.

Here's an example:

You have a string of at least n characters.

You want to get the first n characters and leave the remainder.

The first n characters is my_string[ : n].

The remainder is my_string[n : ].

What if len(my_string) == n?

Wouldn't my_string[n : ] raise an IndexError?

Another example:

You want at most n characters of my_string.

What if len(my_string) < n?

my_string[ : n] would raise an IndexError.

You'd need to do my_string[ : min(n, len(my_string))].

Although Python's slicing behaviour doesn't help in your use-case, in the majority of cases it does.
--
https://mail.python.org/mailman/listinfo/python-list

Reply via email to