Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么看起来您可以间接修改列表_Python_Arrays - Fatal编程技术网

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
这仍然不能复制数组时,更改一个会更改另一个