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
相关产品推荐
相关产品推荐

