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