纯Python列表问题求助:筛选符合条件的果篮索引
果篮选择问题的修正方案
原代码存在的问题
- 错误使用全局橙子最大值:你取了整个橙子列表的最大值,但我们只需要在苹果数量为最大值的果篮中筛选橙子最多的,全局最大值可能来自苹果数量不达标的果篮,导致判断逻辑失效。
- 索引获取逻辑错误:
a.index()和b.index()会返回第一个匹配目标值的索引,当有多个果篮符合苹果最大值条件时,无法正确追踪当前比较的果篮,会错误覆盖为第一个匹配项的索引。
修正后的实现代码
n = int(input()) apples = [] oranges = [] for _ in range(n): x, y = map(int, input().split()) apples.append(x) oranges.append(y) # 第一步:找到苹果数量的最大值 max_apples = max(apples) # 第二步:筛选出所有苹果数量达标的果篮,记录它们的橙子数和索引 candidates = [] for idx in range(n): if apples[idx] == max_apples: candidates.append( (oranges[idx], idx) ) # 第三步:在候选果篮中选出橙子数量最多的(若数量相同,保留最后一个) max_orange = -1 result_idx = 0 for orange_count, idx in candidates: if orange_count > max_orange: max_orange = orange_count result_idx = idx # 若橙子数量相同,选择最后出现的果篮(可根据需求调整为保留第一个) elif orange_count == max_orange: result_idx = idx # 输出从1开始的果篮编号 print(result_idx + 1)
代码逻辑说明
- 先收集所有果篮的苹果和橙子数量。
- 确定苹果数量的最大值,以此为门槛筛选候选果篮。
- 在候选果篮中遍历比较橙子数量,记录橙子数量最多的果篮索引;如果有多个果篮橙子数量相同且为最大值,默认保留最后一个出现的果篮(若需要保留第一个,可删除
elif分支)。
示例测试
输入:
3 2 3 1 4 2 5
输出:3,符合题目要求的结果。
内容的提问来源于stack exchange,提问作者dami1025
相关产品推荐
相关产品推荐

