On 10/29/2012 04:01 PM, Ian Kelly wrote:
On Mon, Oct 29, 2012 at 9:20 AM, Andrew Robinson
<andr...@r3dsolutions.com>  wrote:
FYI: I was asking for a reason why Python's present implementation is
desirable...

I wonder, for example:

Given an arbitrary list:
a=[1,2,3,4,5,6,7,8,9,10,11,12]

Why would someone *want* to do:
a[-7,10]
Instead of saying
a[5:10] or a[-7:-2] ?
A quick search of local code turns up examples like this:

if name.startswith('{') and name.endswith('}'):
     name = name[1:-1]
Which is done to avoid explicitly calling the len() operator.
If slices worked like ranges, then the result of that would be empty,
which is obviously not desirable.
Yes, and that's an excellent point -- but note what I am showing in the example. It is that example, which I am specifying. There are only two cases where I think the default behavior of Python gives undesirable results:

The step is positive, and the pair of indexes goes from negative to positive. Likewise, If the pair went from positive to negative, and the step was negative.

In all other combinations, the default behavior of python ought to remain intact. I apologize for not making this crystal clear -- I thought you would focus on the specific example I gave.

I don't know of a reason why one might need to use a negative start
with a positive stop, though.
I've already given several examples; and another poster did too -- eg: Gene sequences for bacteria. It's not uncommon to need this. If I do some digging, I can also show some common graphics operations that benefit greatly from this ability -- NOTE: in another thread I just showed someone how to operate on RGBA values... Slicing becomes THE major operation done when converting, or blitting, graphics data. etc.

Another example -- Jpeg, for example, uses discrete cosines -- which are a naturally cyclic data type. They repeat with a fixed period. I know there are "C" libraries already made for Jpeg -- but that doesn't mean many other applications with no "C" library aren't plagued by this problem.

I don't know how to make this point more clear. There really *ARE* applications that uses cyclic lists of data; or which can avoid extra logic to fix problems encountered from linear arrays which *end* at a particular point.

sometimes it is desirable for a truncation to occur, sometimes it's NOT. The sign convention test I outlined, I believe, clearly detects when a cyclic data set is desired. If there are normal examples where my tests fail -- that's what's important to me.


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to