On Wed, Oct 05, 2011 at 01:31:41PM -0500, Tim Chase wrote: > On 10/04/11 20:45, Terry Reedy wrote: > >On 10/4/2011 9:50 AM, Valiev Sergey wrote: > > > >>- `[]` - used for list comprehension, > >>- `()` - used for generators, > >>- `[start:stop]` / `[start:stop:step]` - used for slices. > >>The idea is to use `(start:stop)` / `(start:stop:step)` as 'lazy > >>evaluated' slices (like itertools.islice). > >>What do you think about it? > > > >a(b) is already used for function calls. Making a(b:c) be something > >unreleated does not seem like a good idea to me. At present, a[b:c] == > >a[slice(b,c)]. However, a(slice(b,c)) is already a function call and > >could not equal a(b:c). > > I'm very -1 on the initial proposal with parens, but I wouldn't > object to generators growing a method (__getitem__?) to do slices > via itertools, something like > > gen = (a for a in iterator if test(a)) > for thing in gen[4::2]: > do_something(thing) > > acting something like > > gen = (a for a in iterator if test(a)) > for thing in itertools.islice(gen, start=4, step=2): > do_something(thing) > > -tkc > > > >
Wait, how would this work fundamentally? A list can be sliced because all the values are there. A generator does not have all its value at once (it generates each value as requested). I don't like change so I look at these kinds of suggestions with lots of scrutiny and biased criticism. -- http://mail.python.org/mailman/listinfo/python-list