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

嵌套循环与条件判断场景下,如何高效获取满足条件次数最多的外层循环索引

嵌套循环与条件判断场景下,如何高效获取满足条件次数最多的外层循环索引

嘿,你的思路完全没问题,但确实可以不用二维列表这种有点笨重的方式,咱们换个更轻量直观的思路——只跟踪计数和对应的最优i值就行,而且完全保留你想要的嵌套循环和if语句结构~

你之前用二维列表存每个i的符合条件的记录,其实根本不需要存所有的1,只要给每个i统计满足条件的次数就够了。我们可以用两个变量来实时跟踪当前的最大次数,以及对应的i值:

max_count = 0
best_i = None

for i in range(1, 10):
    current_count = 0
    for j in range(1, 7):
        if i % j == 0:
            current_count += 1
    # 内层循环结束后,检查当前i的次数是否刷新了最大值
    if current_count > max_count:
        max_count = current_count
        best_i = i

print(best_i)  # 输出6,和你预期的结果一致

这个方法的好处很明显:

  • 空间效率高:不管你的i范围多大(比如从1到10000),都只占用固定的几个变量内存,不像二维列表会随着i的数量膨胀
  • 逻辑更清晰:一眼就能看出来是在统计每个i的符合条件次数,然后找最大值对应的i
  • 代码更简洁:省去了维护列表、计算索引这些额外步骤

如果碰到有多个i的满足次数相同且都是最大值的情况,这个代码会返回第一个出现的i。要是你想把所有符合条件的i都找出来,也可以稍微调整:先遍历一次记录最大次数,再遍历一次收集所有次数等于最大值的i,比如:

# 第一步:先找到最大次数
max_count = 0
for i in range(1, 10):
    current_count = 0
    for j in range(1, 7):
        if i % j == 0:
            current_count += 1
    if current_count > max_count:
        max_count = current_count

# 第二步:收集所有次数等于最大值的i
best_is = []
for i in range(1, 10):
    current_count = 0
    for j in range(1, 7):
        if i % j == 0:
            current_count += 1
    if current_count == max_count:
        best_is.append(i)

print(best_is)  # 如果有多个最大值,会输出所有对应的i

这样既保留了你要求的嵌套循环和if语句,又解决了原方法“笨重”的问题,不管范围多大都能轻松应对~

备注:内容来源于stack exchange,提问作者Peter4075

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 12:03:02