xslice idea | a generator slice

Russel Walker russ.pobox at gmail.com
Thu Jul 11 16:52:14 CEST 2013

Just some dribble, nothing major.

I like using slices but I also noticed that a slice expression returns a new sequence.

I sometimes find myself using them in a for loop like this:

seq = range(10)
for even in seq[::2]:
    print even

(That's just for an example) But wouldn't it be a bit of a waste if the slice expression returns a whole new list just when all you want to do in this case is iterate over it once?

I suppose you could get around that will a little more code like:

seq = range(10)
for x in xrange(0, len(seq), 2):
    print seq[x]

But it would be nice there was a way to iterate over a 'slice' of sorts, that would act as a generator.

So I tried my handle at a little class called xslice (the x from xrange to indicate its a generator (although I'm not sure if that's technically correct)).

With it, instead of the above example you can do:

seq = range(10)
for even in xslice(seq, 0, len(seq), 2):
    print even

It would be more or less like using xrange. I know the syntax is not that much of an improvement over just using exrange and retrieving items by index, but it's the concept I'm looking at.

Do you think this or something like be a builtin in the future?

More information about the Python-list mailing list