在两个列表上循环,重复最短的列表,直到最长的列表结束

2024-05-21 04:30:50 发布

您现在位置:Python中文网/ 问答频道 /正文

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

这就是我想要实现的:

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

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

不知什么原因,我就是看不到一个好办法。


Tags: 文件方法标记a2列表a1原因result
2条回答

试试看

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

假设lalb长:

>>> 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中的元素。

相关问题 更多 >