Steven D'Aprano wrote: > If I want to iterate over part of the list, the normal Python idiom is to > do something like this: > > alist = range(50) > # first item is special > x = alist[0] > # iterate over the rest of the list > for item in alist[1:] > x = item > > The important thing to notice is that alist[1:] makes a copy. What if the > list has millions of items and duplicating it is expensive? What do people > do in that case? > > Are there better or more Pythonic alternatives to this obvious C-like > idiom? > > for i in range(1, len(alist)): > x = alist[i] > >
I think this is a job for iterators: listiter = iter(alist) first_item_is_special = listiter.next() for not_special_item in listiter: do_stuff_with(not_special_item) Other solutions might involve enumerators: special = [i for i in xrange(50) if not i%13] for i,item in alist: if i in special: do_something_special_with(item) else: do_other_stuff_with(item) James James -- http://mail.python.org/mailman/listinfo/python-list