What is the default range in slicing: For example:
ls = [1, 2, 3, 4, 5]
ls[-3::1] #returns copy of the elements at indexes -3, -2, -1
ls[-3::-1] #returns copy of the elements at indexes -3 till the start of the list i.e ls[-5]
ls[::-1] #returns copy of the reverse version of the list
ls[::1] #return the list as is
What is the idea behind that? How does python determine unstated start and end indexes?