为何给定Python代码无法修改列表元素值?代码错误排查
问题分析与修正方案
嘿,我来帮你揪出这段代码没达到预期效果的核心问题,主要有两个关键点:
1. 循环中修改的是临时变量,而非原列表元素
在你的for i in e:循环里,i只是原列表e中元素的临时副本——你对i做的i = i + p + 1操作,只会改变这个副本的值,完全不会影响原列表e里的元素。原列表始终保持排序后的[1,3],自然看不到累加后的结果。
2. 缺少结果输出语句
你的代码里从头到尾没有print相关的语句,就算逻辑正确,也没法把计算后的结果展示出来。
修正后的代码
e = map(int, raw_input().split()) e = sorted(e) # 通过索引遍历,直接修改原列表的元素 for idx in range(len(e)): current_num = e[idx] count = e.count(current_num) e[idx] = current_num + count + 1 # 输出最终结果 print(e)
修正说明
- 改用
range(len(e))获取列表的索引,通过e[idx]直接操作原列表的元素,这样修改才会真正生效。 - 添加了
print(e)语句,把处理后的结果输出到控制台。 - 额外提一句:如果你的列表里有重复元素(比如输入
1 1),e.count(current_num)会统计整个列表中该元素的总数量,每个重复元素都会基于这个总数计算,这符合你代码里的逻辑~
内容的提问来源于stack exchange,提问作者Himanshu Jotwani
相关产品推荐
相关产品推荐

