嵌套循环与条件判断场景下,如何高效获取满足条件次数最多的外层循环索引
嵌套循环与条件判断场景下,如何高效获取满足条件次数最多的外层循环索引
嘿,你的思路完全没问题,但确实可以不用二维列表这种有点笨重的方式,咱们换个更轻量直观的思路——只跟踪计数和对应的最优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
相关产品推荐
相关产品推荐

