Peter Otten <[EMAIL PROTECTED]> wrote: > Gerard Flanagan wrote: > > Ben Finney wrote: > > >> pile_index = 0 > >> for card in deck: > >> piles[pile_index].append(card) > >> pile_index = (pile_index + 1) % numpiles > > > > no need to maintain an index ;-) > > > > piles = [ list() for _ in range(n) ] > > for i, card in enumerate(deck): > > piles[i % numpiles].append(card) > > No need to maintain an index ;-) > > piles = [deck[start::numpiles] for start in range(numpiles)] > > Assuming deck is a list, that is.
Or, for deck hypothetically being an arbitrary iterable, import itertools as it piles = [ list() for _ in range(numpiles) ] for pile, card in it.izip(it.cycle(piles), deck): pile.append(card) i.e., let itertools do the cycling for you. But, sure, for this problem one can no doubt assume that deck is sliceable, and extended slicing (==slicing with a stride) comes in handy. Alex -- http://mail.python.org/mailman/listinfo/python-list