You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python如何同时遍历两个不等长列表,短列表循环复用直到长列表遍历结束

不等长列表循环遍历解决方案

你之前尝试使用的itertools.zip_longest无法满足需求,该方法的fillvalue仅支持设置固定填充值,不能实现短列表遍历结束后自动从头循环的效果。

实现代码

首先导入Python标准库itertools中的cycle方法,它可以无限重复迭代传入的序列,配合内置的zip方法即可实现需求:

import itertools

# 注意原示例中的00是Python3不支持的前导零十进制写法,修正为0
_list = [19, 74, 544, 39, 0, 34, 44, 593, 33, 2123, 22]
_list1 = [0, 1, 2, 3, 4]

# 用cycle包装短列表,和长列表zip即可
result = list(zip(_list, itertools.cycle(_list1)))
print(result)

输出结果

运行后得到的结果完全符合预期:

[(19, 0), (74, 1), (544, 2), (39, 3), (0, 4), (34, 0), (44, 1), (593, 2), (33, 3), (2123, 4), (22, 0)]

原理解释

  • itertools.cycle(_list1) 会无限循环输出_list1的元素,短列表遍历完自动回到开头
  • zip方法会在参与配对的最短可迭代对象耗尽时停止,这里因为cycle生成的是无限序列,所以会完全遍历完更长的_list后停止

内容的提问来源于stack exchange,提问作者Chinese Billi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.14 21:36:10