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

为什么Python中交换赋值变量后列表元素位置没有发生变化?

两段代码运行效果不同的根本原因

Python中的数字属于不可变类型,当你执行number1 = list[inner_iteration - 1]、number2 = list[inner_iteration]赋值操作时,只是把number1、number2这两个临时变量指向了列表对应位置存储的数值对象,这两个临时变量和原列表的对应索引位置没有任何绑定关系。

两段代码的交换逻辑本质完全不同:

  • 第一段代码的交换是直接对列表的两个索引位置list[inner_iteration - 1]、list[inner_iteration]赋值,直接修改了列表本身存储的元素,所以修改会生效,排序逻辑正常。
  • 第二段代码的交换仅修改了number1、number2两个临时变量的指向,没有对原列表做任何修改,列表的元素顺序完全没有变化,自然无法完成排序。

你可以用更简单的测试代码验证这个逻辑:

test_list = [1, 2]
a = test_list[0]
b = test_list[1]
# 仅交换临时变量
a, b = b, a
print(test_list) # 输出仍为 [1, 2],列表没有任何变化

内容的提问来源于stack exchange,提问作者toothpick

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:06:04