PyProg PyProg wrote: > Hello, > > I have a little problem, I have two lists: > >>>> a=[1, 2, 3, 4, 5, 6] >>>> b=['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j'] > > ... and I want to obtain: > >>>> [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5), ('f', 6), ('g', > 1), ('h', 2), ('i', 3), ('j', 4)] > > I want to obtain that with a comprehension-list. > > Lists can have dimension completely different.
Here is one way using itertools.cycle() to repeat elements of a. This will return a list the same length as b, with elements of a repeated as needed: In [140]: from itertools import cycle In [141]: zip(b, cycle(a)) Out[141]: [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5), ('f', 6), ('g', 1), ('h', 2), ('i', 3), ('j', 4)] If b might sometimes be the shorter list you will have to work a little harder, perhaps cycle both lists and take the first max(len(a), len(b)) elements: In [142]: from itertools import cycle, islice, izip In [143]: list(islice(izip(cycle(b), cycle(a)), max(len(a), len(b)))) Out[143]: [('a', 1), ('b', 2), ('c', 3), ('d', 4), ('e', 5), ('f', 6), ('g', 1), ('h', 2), ('i', 3), ('j', 4)] Kent _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor