循环2个列表,重复最短,直到最长

时间:2011-01-27 11:34:52

标签: python list loops

我确信有一种简单而明显的方法可以做到这一点,但我一直在谷歌搜索和阅读文档而我找不到任何东西。

这就是我想要实现的目标:

la = ['a1','a2','a3','a4']
lb = ['b1','b2']
result = ['a1_b1','a2_b2','a3_b1','a4_b2']

我有一个日期列表,其中一些日期上有标记的东西。然后我有一个更大的日期列表,我想尽可能多地将最小的列表放在更大的列表中。它可能需要某种循环,因为我需要访问较大列表中的日期以获得最终结果。

出于某种原因,我看不出这样做的好方法。

3 个答案:

答案 0 :(得分:22)

假设la超过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)返回lb中元素的循环迭代器。

  • zip(...)返回一个元组列表,其中每个元素对应于la中与迭代器中匹配元素耦合的元素。

答案 1 :(得分:10)

尝试

result = ["_".join((i, j)) for i, j in itertools.izip(la, itertools.cycle(lb))]

答案 2 :(得分:1)

import itertools
la = ['a1', 'a2', 'a3', 'a4']
lb = ['b1', 'b2']
for i, j in zip(la, itertools.cycle(lb)):
    print('_'.join((i,j)))