[Python-ideas] [Python-Dev] Inclusive Range
Ethan Furman
ethan at stoneleaf.us
Mon Oct 11 08:35:21 EDT 2010
Antoon Pardon wrote:
> On Sat, Oct 09, 2010 at 01:37:03AM +0000, Steven D'Aprano wrote:
>
>>On Fri, 08 Oct 2010 15:53:17 -0400, Jed Smith wrote:
>>
>>
>>>On Fri, Oct 8, 2010 at 1:26 PM, Steven D'Aprano
>>><steve at remove-this-cybersource.com.au> wrote:
>>>
>>>>On Fri, 08 Oct 2010 10:21:16 +0200, Antoon Pardon wrote:
>>>>
>>>>
>>>>>Personnaly I find it horrible
>>>>>that in the following expression: L[a:b:-1], it is impossible to give
>>>>>a numeric value to b, that will include L[0] into the reversed slice.
>>>>
>>>>
>>>>
>>>>>>>L = [1, 2, 3, 4, 5]
>>>>>>>L[5:-6:-1]
>>>>
>>>>[5, 4, 3, 2, 1]
>>>
>>>>>>a = [1, 2, 3, 4, 5, 6]
>>>>>>a[::-1]
>>>
>>>[6, 5, 4, 3, 2, 1]
>>
>>
>>Well of course that works, that is the standard Python idiom for
>>reversing a sequence.
>>
>>But the point was that Antoon claimed that there is no numeric value for
>>the end position that will include L[0] in the reversed slice. My example
>>shows that this is not correct.
>
>
> I stand by that claim. I think it was fairly obvious that what I meant
> was that it was impossible to give such a numeric value that would work
> with arbitrary L.
>
> if L2 == list(reversed(L1)) and a and b are in the range 1 < x <= len(L),
> we have the following invariant.
>
> L1[a:b] == L2[b-1:a-1:-1]
Are you sure?
Python 2.5.4 (r254:67916, Dec 23 2008, 15:10:54) [MSC v.1310 32 bit
(Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
--> L1 = [1, 2, 3, 4, 5]
--> L2 = list(reversed(L1))
--> L1
[1, 2, 3, 4, 5]
--> L2
[5, 4, 3, 2, 1]
--> L1[2:5:1], L2[4:1:-1]
([3, 4, 5], [1, 2, 3])
> However this no longer works if either nr is 0.
In which case it's not an invariant, is it?
~Ethan~
More information about the Python-list
mailing list