问题
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.
回答1:
-0
is 0
, and a slice that goes from the beginning of a list
inclusive to index 0
non-inclusive is an empty list
.
回答2:
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.
来源:https://stackoverflow.com/questions/30879473/why-does-slice-0-return-empty-list-in-python