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

如何高效组合四个range,用单个for循环完成重复操作?

可以用单个循环实现,核心是提炼range组合规则

你原来的四个循环本质是两组a的遍历模式和两组b的遍历模式的两两组合:

  • a的模式:range(A1)(正向遍历)、range(A2, -1, -1)(反向遍历到0)
  • b的模式:range(B1)(正向遍历)、range(B2, -1, -1)(反向遍历到0)

我们可以把这些模式的组合集中整理,再用迭代工具把所有(a,b)对串联起来,只用一个循环完成调用:

高效实现(借助itertools)

from itertools import chain

obj = SomeClass()

# 集中定义所有需要的a、b range组合
range_combinations = [
    (range(A1), range(B1)),
    (range(A2, -1, -1), range(B1)),
    (range(A1), range(B2, -1, -1)),
    (range(A2, -1, -1), range(B2, -1, -1)),
]

# 串联所有zip后的迭代器,一次遍历执行
for a, b in chain.from_iterable(zip(a_rng, b_rng) for a_rng, b_rng in range_combinations):
    obj.some_func(a, b)

无额外依赖的写法

如果不想导入库,用嵌套生成器表达式也能实现:

obj = SomeClass()

range_combinations = [
    (range(A1), range(B1)),
    (range(A2, -1, -1), range(B1)),
    (range(A1), range(B2, -1, -1)),
    (range(A2, -1, -1), range(B2, -1, -1)),
]

for a, b in (pair for combo in range_combinations for pair in zip(*combo)):
    obj.some_func(a, b)

这种写法和原代码的执行顺序完全一致,重复的调用逻辑只写一次,后续调整range组合时,只需修改range_combinations列表即可,维护性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:35:21