On Dec 14, 10:03 am, Dave <b49p23t...@stny.rr.com> wrote: > Just as sets may now be written as {3,'hi'}, I propose that slices > should be available using [start:end] syntax. Following example comes > from projecteuler.net problem 166. The Numeric community would also > like this, as would the general python user. The slice notation would > require one ":" between the brackets to differentiate it from a list, > which is similar to the set notation requirement that disambiguates it > from a dictionary. > > Several times now I've wanted python slice notation. Perhaps I'll > write a Python Enhancement Proposal. I stored slices of vector array > entries to add > > edge = 4 > indexes = [] > n = edge > nn = n**2 > for i in range(edge): > indexes.extend([ > slice(i*n,(i+1)*n,1), # rows > slice(i,nn,n), # cols > ]) > > row_slices = indexes[0::2] > col_slices = indexes[1::2] > slash = slice(n-1,n*(n-1)+1,n-1) > backslash = slice(0,nn,n+1) > > Which could have been written in a manner completely consistent with > other python shorthand notations and for which python "cannot > possibly" use the notation for some other purpose, > > edge = 4 > indexes = [] > n = edge > nn = n**2 > for i in range(edge): > indexes.extend([ > [i*n: (i+1)*n] # rows > [i: nn: n], # cols > ]) > > row_slices = indexes[0::2] > col_slices = indexes[1::2] > slash = [n-1: n*(n-1)+1: n-1] > backslash = [0: nn: n+1]
-1 Explicit creation of slice objects is an uncommon need and there is no reason to support it with its own syntax. I'd agree with Terry Reedy that range/xrange is far more commonly used than slice objects, and if a floating slice syntax were ever added to Python it ought to be used for range. If you need to use a lot of slice objects you can lower your code footprint by defining a helper class like this (adapt as needed): class SliceCreator(object): def __getitem__(self,loc): if not isinstance(loc,slice): raise TypeError return loc slc = SliceCreator() slash = slc[n-1: n*(n-1)+1: n-1] It might have been a reasonable idea for slice (and, perhaps, range) to use slice notation rather than a function call, on the thinking that the notational convenience outweighs the fact that you're not actually getting an item, but it's too late for that. Carl Banks -- http://mail.python.org/mailman/listinfo/python-list