On Oct 17, 3:40 pm, StarWing <weasley...@sina.com> wrote: > hello everyone, I'm new here :-) > > sometimes I want to iterate a part of a sequence. but don't want to > copy it. i.e. > > a = list(...) > # now a is a list, and a[:] is another list, and so a[m:n] > # now we do something with the 0~len(a)-3 elements of a > for val in a[:-2]: > #do something.... > > but, this will cause a copy on a, has some convenience way to get a > iter to iterate on a part of list? > > i made this: > class iterslice: > def __init__(self, list): > self.list = list > > def __len__(self): > return len(self.list) > > def __getitem__(self, slice): > import itertools > listlen = len(self.list) > range = (((slice.start + listlen) % listlen) if slice.start > else 0, > ((slice.stop + listlen) % listlen) if slice.stop else > listlen, > slice.step) > return itertools.islice(self.list, *range) > > a = [1,2,3,4] > for i in iterslice(a)[:-1:2]: > print i > > my question is: > - are there any *Standard* way to do this? (a buit-in function? a > module?) > - are there any better implements? > > thanks for attention :-)
Check the itertools module. HTH -- Arnaud -- http://mail.python.org/mailman/listinfo/python-list