Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 循环2个列表,重复最短的列表,直到最长的列表结束_Python_List_Loops - Fatal编程技术网

Python 循环2个列表,重复最短的列表,直到最长的列表结束

Python 循环2个列表,重复最短的列表,直到最长的列表结束,python,list,loops,Python,List,Loops,我相信有一个简单而明显的方法可以做到这一点,但我一直在谷歌搜索和阅读文档,我就是找不到任何东西 这就是我想要实现的目标: la = ['a1', 'a2', 'a3', 'a4'] lb = ['b1', 'b2'] result = ['a1_b1', 'a2_b2', 'a3_b1', 'a4_b2'] 我有一张日期表,其中一些上面有标记。然后我有一个更大的日期列表,我想把最小的列表放在更大的列表中,尽可能多地放几次。它可能需要某种循环,因为我需要访问更大列表中的日期以获得最终结果 出于某

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

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

la = ['a1', 'a2', 'a3', 'a4']
lb = ['b1', 'b2']
result = ['a1_b1', 'a2_b2', 'a3_b1', 'a4_b2']
我有一张日期表,其中一些上面有标记。然后我有一个更大的日期列表,我想把最小的列表放在更大的列表中,尽可能多地放几次。它可能需要某种循环,因为我需要访问更大列表中的日期以获得最终结果

出于某种原因,我就是找不到一个好办法来做这件事。

试试看

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

假设
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
    中的一个元素以及迭代器中的匹配元素


如果我们之前不知道哪个
la
lb
会首先耗尽,该怎么办?这是否回答了您的问题?
import itertools
la = ['a1', 'a2', 'a3', 'a4']
lb = ['b1', 'b2']
for i, j in zip(la, itertools.cycle(lb)):
    print('_'.join((i,j)))