Tom Tucker wrote: > Hello all. Any suggestions how I could easily iterate over a list and > print the output 3 across (when possible)? One method I was considering > was removing the recently printed item from the list, checking list > length, > etc. Based on the remaining length of the list I would then print X > across. Yah? Is their and easier approach I might be overlooking? > > > For example... > > mylist = ['serverA', 'serverB', 'serverC', 'serverD',' serverE', > 'serverF', 'serverG'] > > > Desired Output > ============ > serverA serverB serverC > serverD serverE serverF > serverG
Here's another approach that works with arbitrary iterables, not just lists: >>> from itertools import islice >>> def chunks(items, n, rowtype=tuple): ... items = iter(items) ... while True: ... row = rowtype(islice(items, n)) ... if not row: break ... yield row ... >>> for row in chunks(range(7), 3): ... print row ... (0, 1, 2) (3, 4, 5) (6,) >>> mylist = ["server" + c for c in "ABCDEFG"] >>> for row in chunks(mylist, 3, " ".join): ... print row ... serverA serverB serverC serverD serverE serverF serverG _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: http://mail.python.org/mailman/listinfo/tutor