Suggested feature: slice syntax within tuples (or even more generally)?
Ian Kelly
ian.g.kelly at gmail.com
Mon Feb 25 11:54:56 EST 2013
On Mon, Feb 25, 2013 at 12:41 AM, Andrew Robinson
<andrew3 at r3dsolutions.com> wrote:
>> Intuitively, it should result in an infinite loop starting at 0. But
>> ranges require a stop value for a very good reason -- it should not be
>> this easy to accidentally create an infinite for loop.
>
> ...
> and, besides, the same is true with other constructions of loops....
>
> while a: # Damn easy, if a is accidentally true!
Notice I specifically said an "infinite *for* loop". While loops are
meant to be indeterminate in the number of iterations they will take
going into the loop; for loops are not.
>> The next problem you run into is that the semantics of negative
>> numbers are completely different between slices and ranges. Consider
>> this code:
>>
>> s = (-5:6)
>> for i in s:
>> print(i)
>> for i in range(6)[s]:
>> print(i)
>
> I don't find this difference to be necessary, nor objectionable.
>
> It is less inconsistent, in my view, to allow that
> ([ 1,2,3,4,5 ])[-1:2] produce [5,1,2] than an empty list;
> and ([ 1,2,3,4,5])[2:-1] does produce an empty list.
>
> I have been looking for actual programs that this would break for over two
> months now, and I haven't been finding any. I am willing to run any
> mainstream application you can find on test-patched python!
Yes, I recollect now that we have already had this discussion.
More information about the Python-list
mailing list