Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/294.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 - Fatal编程技术网

Python 在二维数组的元素中插入值

Python 在二维数组的元素中插入值,python,Python,假设我用零初始化创建了3x4的2D数组。 然后,我想将100添加到arr[0][1]中,我希望100只添加到arr[0][1]单元格中。请参阅案例1和案例2: 来自案例1: 我看到的是,在arr的第1列的每一行中都添加了100。这不是我所期望的 来自案例2 结果是我所期望的。谁能帮我解释一下吗 Case 1: >>> arr = [[0]*4]*3 >>> arr [[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]] >&

假设我用零初始化创建了3x4的2D数组。 然后,我想将100添加到arr[0][1]中,我希望100只添加到arr[0][1]单元格中。请参阅案例1和案例2:

来自案例1: 我看到的是,在arr的第1列的每一行中都添加了100。这不是我所期望的

来自案例2 结果是我所期望的。谁能帮我解释一下吗

Case 1:
>>> arr = [[0]*4]*3
>>> arr
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
>>> len(arr)
3
>>> len(arr[0])
4
>>> type(arr)
<class 'list'>

>>> arr[0] [1] = 100
>>> arr
[[0, 100, 0, 0], [0, 100, 0, 0], [0, 100, 0, 0]]



Case 2:
>>> arr = [[0]*4 for _ in range(3)]
>>> arr
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

>>> type(arr)
<class 'list'>

>>> arr[0] [1] = 100

>>> arr
[[0, 100, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
案例1:
>>>arr=[[0]*4]*3
>>>啊
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
>>>len(arr)
3.
>>>len(arr[0])
4.
>>>类型(arr)
>>>arr[0][1]=100
>>>啊
[[0, 100, 0, 0], [0, 100, 0, 0], [0, 100, 0, 0]]
案例2:
>>>arr=[[0]*4表示范围内(3)]
>>>啊
[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]
>>>类型(arr)
>>>arr[0][1]=100
>>>啊
[[0, 100, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

[0]*4
创建对同一对象0的引用列表。因为整数是不可变的,所以没关系;更改一个元素会将其替换为新对象。但是,
[[0]*4]*3]
创建一个列表,其中包含对同一个可变列表对象的3个引用,该列表对象包含对0的4个引用。如您所见,更改一个列表中的一个元素会在所有3个引用中显示为更改

在列表理解中,为
\uu
的每个值创建一个新的列表
[0]*4
,而不是简单地存储对同一列表的新引用