James Stroud wrote: > 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
I mean for i,item in enumerate(alist): -- http://mail.python.org/mailman/listinfo/python-list