为什么看起来您可以间接修改列表

时间:2017-04-04 11:40:16

标签: 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:
        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']]

1 个答案:

答案 0 :(得分:1)

数组本身已更改,您在以下两行更改了它:

Arrs[x][y] = "2"
Arrs[x][y] = "1"

变量Arrs仍然是原始数组,将其传递给函数并不复制数组