我正在尝试将 2 个具有不同数据和大小的列表合并为 1 个,并让较小的列表“环绕”。我正在寻找一种干净的方法来做到这一点,例如
输入:
list1 = ['apple', 'orange', 'strawberry', 'avocado']
list2 = ['1','2','3']
输出:
[
{"l1": "apple", "l2": "1"},
{"l1": "orange", "l2": "2"},
{"l1": "strawberry", "l2": "3"},
{"l1": "avocado", "l2": "1"}
]
请注意,对于 “avocado”,我们返回到 “1” 并环绕 list2。
最明显(而且看起来很丑陋)的解决方案是从一个空列表开始,在一个循环中有 2 个索引,每次迭代附加一个新的列表项,较小的一个在到达末尾时“换行”到开头.在 Python 2.7 中是否有一种简洁的方法来执行此操作?
请您参考如下方法:
您可以使用 itertools.cycle包装第二个列表:
from itertools import cycle
lst = [dict(zip(['l1', 'l2'], tup)) for tup in zip(list1, cycle(list2))]
