Stumbled upon something slightly perplexing today while writing some unittests:
blah = ['a', 'b', 'c']
blah[:-3] # []
blah[:-2] # ['a']
blah[:-1] # ['a', 'b']
blah[:-0] # []
Can't for the life of me figure out why blah[:-0] # []
should be the case, the pattern definitely seems to suggest that it should be ['a', 'b', 'c']
. Can anybody help to shed some light on why that is the case? Haven't been able to find mention in the docs as to why that is the case.
-0
is 0
, and a slice that goes from the beginning of a list
inclusive to index 0
non-inclusive is an empty list
.
Python doesn't treat -0
any different from 0
.
blah[:0]
means all elements up to but not including the first one. This is an empty list, and blah[:-0]
is exactly the same thing.
You can test this by checking that
blah[0:]
is the whole list, starting from the first element.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With