I am sure there is an easy and obvious way to do this, but I have been googling and reading the docs and I just cannot find anything.
This is what I want to achieve:
la = ['a1','a2','a3','a4']
lb = ['b1','b2']
result = ['a1_b1','a2_b2','a3_b1','a4_b2']
I have a list of dates and some of them has something marked on them. I then have a much larger list of dates and I want to put the smallest list inside the bigger list as many times as possible. It will probably require some sort of loop as I need access to the dates in the larger list for the end result.
For some reason I just cannot see a good way to do this.
Try
result = ["_".join((i, j)) for i, j in itertools.izip(la, itertools.cycle(lb))]
Assuming la
is longer than lb
:
>>> import itertools
>>> [x+'_'+y for x,y in zip(la, itertools.cycle(lb))]
['a1_b1', 'a2_b2', 'a3_b1', 'a4_b2']
itertools.cycle(lb)
returns a cyclic iterator for the elements inlb
.zip(...)
returns a list of tuples in which each element corresponds to an element inla
coupled with the matching element in the iterator.
来源:https://stackoverflow.com/questions/4815792/loop-over-2-lists-repeating-the-shortest-until-end-of-longest