遍历两个列表,重复较短的直到较长的结束

35 投票
4 回答
12992 浏览
提问于 2025-04-16 10:43

我相信这个问题一定有简单明了的解决办法,但我一直在网上查资料和看文档,就是找不到合适的答案。

我想要实现的目标是:

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

我有一份日期列表,其中有些日期上标记了一些东西。然后我还有一份更大的日期列表,我想把较小的列表尽可能多地放入这个更大的列表中。为了实现这个目标,可能需要用到循环,因为我需要访问更大列表中的日期。

但不知为什么,我就是想不出一个好的方法来做到这一点。

4 个回答

2

在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这些问题可能是因为我们没有正确理解某些概念或者使用了不合适的代码。为了帮助大家更好地解决这些问题,很多程序员会在网上分享他们的经验和解决方案。StackOverflow就是这样一个平台,大家可以在这里提问、回答问题,互相帮助。

在这个平台上,用户可以发布自己的问题,其他人则可以根据自己的经验来回答。每个问题和回答都有一个评分系统,大家可以根据回答的质量来给分,这样最有用的答案就会被更多人看到。

总之,StackOverflow是一个很好的学习和交流的地方,特别适合那些刚开始学习编程的小伙伴们。在这里,你可以找到很多实用的技巧和解决方案,帮助你更快地掌握编程的知识。

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

假设 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,第二个元素则是来自这个循环迭代器中对应的元素。

20

试试看

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

撰写回答