Python 为什么看起来您可以间接修改列表
当我运行下面的代码时,我得到的输出显示原始数组已被修改,但正如您所看到的,数组本身没有被更改Python 为什么看起来您可以间接修改列表,python,arrays,Python,Arrays,当我运行下面的代码时,我得到的输出显示原始数组已被修改,但正如您所看到的,数组本身没有被更改 Arr = [["1","1","2"],["1","1","1"]] def DoSomethingify(Arrs): for x in range(0, len(Arrs)): for y in range(0, len(Arrs[x])): if (Arrs[x][y] == "1"): Arrs[x][y] = "2" else:
Arr = [["1","1","2"],["1","1","1"]]
def DoSomethingify(Arrs):
for x in range(0, len(Arrs)):
for y in range(0, len(Arrs[x])):
if (Arrs[x][y] == "1"):
Arrs[x][y] = "2"
else:
Arrs[x][y] = "1"
print(Arrs)
for b in range(0, 9):
DoSomethingify(Arr)
print(Arr)
输出:
[['2', '2', '1'], ['2', '2', '2']]
[['1', '1', '2'], ['1', '1', '1']]
[['2', '2', '1'], ['2', '2', '2']]
[['1', '1', '2'], ['1', '1', '1']]
[['2', '2', '1'], ['2', '2', '2']]
[['1', '1', '2'], ['1', '1', '1']]
[['2', '2', '1'], ['2', '2', '2']]
[['1', '1', '2'], ['1', '1', '1']]
[['2', '2', '1'], ['2', '2', '2']]
[['2', '2', '1'], ['2', '2', '2']]
阵列本身已更改,您在以下两行对其进行了更改:
Arrs[x][y] = "2"
Arrs[x][y] = "1"
变量Arrs仍然是原始数组,将其传递给函数并不会复制数组在我看来,它已更改。您的最终打印语句肯定不会输出最初分配给数组的值!我刚刚回答了基本相同的问题,所以以重复的形式结束。啊,这是有道理的,如果是这样,为什么这不适用于其他数据结构,比如integers@RamitJ如果整数上有任何方法来改变它们的值,那么它也适用于整数。但它们不是。这正是python的设计方式。这不仅仅适用于函数,当您说
list2=list1
这仍然不能复制数组时,更改一个会更改另一个