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

Python矩阵迭代疑问:为何迭代过程中原矩阵被修改?

为什么你的Python代码会修改原矩阵?

嘿,我来给你掰扯清楚这个问题~

首先得明白Python里可变对象的引用机制,这是核心原因:

  • 你定义的matrix是一个包含多个子列表的列表,而列表属于「可变对象」——也就是说,它们的内容可以被直接修改,而且变量名其实是指向这个对象的「引用」,不是存着对象本身。
  • 当你写for x in matrix的时候,x并不是每个子列表的副本,而是直接指向原矩阵里对应的那个子列表。相当于x和matrix[0]、matrix[1]这些指向的是同一个列表对象。

再加上sort()方法的特性:

  • list.sort()是原地排序方法,它会直接修改调用它的列表本身,不会返回一个新的排序后的列表(它的返回值是None)。

所以当你在循环里执行x.sort()时,本质上就是在修改原矩阵里的每个子列表,原矩阵自然就跟着变了。

如果不想修改原矩阵,该怎么做?

你可以用sorted()函数代替sort()方法:

matrix = [[1,2,3],[3,1,2],[2,3,1]]
new_matrix = [sorted(x) for x in matrix]
print(matrix)  # 原矩阵不变:[[1,2,3],[3,1,2],[2,3,1]]
print(new_matrix)  # 新的排序后的矩阵:[[1, 2, 3], [1, 2, 3], [1, 2, 3]]

因为sorted()会返回一个新的排序后的列表,不会修改原列表,这样就能保留原矩阵的内容啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.27 19:52:49