为何以下Python代码无法实现列表交换反转?
问题分析与解决
你的Python代码看似逻辑正确,但运行后列表未反转,核心问题出在缩进错误和无效语法上:
具体问题点
- 缩进错误:Python通过缩进划分代码块,你定义
rev函数后,for循环没有缩进,导致该循环不属于函数内部代码。函数rev实际只执行了return n,直接返回原列表,完全没执行反转操作。 - 无效语法:代码中的
or,n[i], n[len(n)-i-1] = n[len(n)-i-1], n[i]是错误写法,这行代码会引发语法报错(若缩进问题修复后),推测是你想注释或写错了交换语句的写法。
修正后的代码
将for循环正确缩进,并删除无效语法行,代码即可正常反转列表:
def rev(n): for i in range(len(n)//2): # 临时变量交换法 temp = n[i] n[i] = n[len(n)-i-1] n[len(n)-i-1] = temp # 也可以用Python简洁的交换语法,二选一即可 # n[i], n[len(n)-i-1] = n[len(n)-i-1], n[i] return n n=[34,45,56,67] print(rev(n)) # 输出结果:[67, 56, 45, 34]
另外补充:Python本身提供了更简便的列表反转方式,比如使用n.reverse()(原地修改列表)或者n[::-1](返回新的反转列表),你可以根据需求选择使用。
内容的提问来源于stack exchange,提问作者HARSHIT JOSHI
相关产品推荐
相关产品推荐

