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

Python如何遍历两个不同长度列表并循环短列表至长列表遍历完成

Python双列表循环遍历实现方案

需求为同时遍历两个不等长列表,较短列表遍历到末尾后自动从头循环,直到较长列表遍历完成,以下是两种可直接使用的实现方式:

方案1:使用标准库itertools.cycle实现

itertools.cycle会无限迭代传入的可迭代对象,刚好匹配短列表循环的需求,代码简洁高效:

from itertools import cycle

def cycle_zip(list_a, list_b):
    len_a, len_b = len(list_a), len(list_b)
    # 较长列表直接遍历,较短列表循环遍历
    if len_a >= len_b:
        return zip(list_a, cycle(list_b))
    return zip(cycle(list_a), list_b)

# 测试用例
nums = [1,2,3,4,5,6,7]
nums2 = [1,2,3,4]
result = list(cycle_zip(nums, nums2))

运行后result的值为[(1, 1), (2, 2), (3, 3), (4, 4), (5, 1), (6, 2), (7, 3)],和示例要求完全一致。

方案2:手动实现(无额外依赖)

如果不想导入标准库,可以通过下标取模的逻辑直接实现,适配所有不等长列表的场景:

def cycle_zip_manual(list_a, list_b):
    len_a, len_b = len(list_a), len(list_b)
    max_length = max(len_a, len_b)
    result = []
    for idx in range(max_length):
        # 下标对列表长度取余,超过长度后自动从头计数
        item_a = list_a[idx % len_a]
        item_b = list_b[idx % len_b]
        result.append((item_a, item_b))
    return result

# 测试用例
nums = [1,2,3,4,5,6,7]
nums2 = [1,2,3,4]
result = cycle_zip_manual(nums, nums2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 01:18:03