Vikas YADAV wrote: > Question: Why does "123"[::-1] result in "321"? > > > > MY thinking is [::-1] is same as [0:3:-1], that the empty places defaults > to start and end index of the string object. > > So, if we start from 0 index and decrement index by 1 till we reach 3, how > many index we should get? I think we should get infinite infinite number > of indices (0,-1,-2,-3.). > > > > This is my confusion. > > I hope my question is clear.
It takes a slice object and a length to replace the missing aka None values with actual integers. You can experiment with this a bit in the interpreter: >>> class A: ... def __getitem__(self, index): ... return index ... >>> a = A() >>> a[::-1] slice(None, None, -1) >>> a[::-1].indices(10) (9, -1, -1) >>> a[::-1].indices(5) (4, -1, -1) >>> a[::].indices(5) (0, 5, 1) So what a missing value actually means depends on the context. Note that while I'm a long-time Python user I still smell danger when a negative step is involved. For everything but items[::-1] I prefer reversed(items[start:stop]) # an iterator, not an object of type(items) when possible. _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor