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

Python 如何更改矩阵中的一个特定元素?

Python 如何更改矩阵中的一个特定元素?,python,list,matrix,tuples,Python,List,Matrix,Tuples,我已将我的矩阵初始化为 mid_mtx = [ [(0, "")]*len(s2) ]*len(s1) 后来我创建了一个包含两个值[6,“Middle”]的列表,称为Middle_ij_val 我想用middle_ij_val更新mid_mtx[I][j]。 所以我做了 mid_mtx[i][j] = middle_ij_val 然而,这将输出 [(0, ''), [6, 'Middle'], (0, ''), (0, ''), (0, ''), (0, ''), (0, ''), (0,

我已将我的矩阵初始化为

mid_mtx = [ [(0, "")]*len(s2) ]*len(s1)
后来我创建了一个包含两个值[6,“Middle”]的列表,称为Middle_ij_val

我想用middle_ij_val更新mid_mtx[I][j]。 所以我做了

mid_mtx[i][j] = middle_ij_val
然而,这将输出

[(0, ''), [6, 'Middle'], (0, ''), (0, ''), (0, ''), (0, ''), (0, ''), (0, '')]

[(0, ''), [6, 'Middle'], (0, ''), (0, ''), (0, ''), (0, ''), (0, ''), (0, '')]

[(0, ''), [6, 'Middle'], (0, ''), (0, ''), (0, ''), (0, ''), (0, ''), (0, '')]

[(0, ''), [6, 'Middle'], (0, ''), (0, ''), (0, ''), (0, ''), (0, ''), (0, '')]

[(0, ''), [6, 'Middle'], (0, ''), (0, ''), (0, ''), (0, ''), (0, ''), (0, '')]

[(0, ''), [6, 'Middle'], (0, ''), (0, ''), (0, ''), (0, ''), (0, ''), (0, '')]
我将如何编码它,以便如果我使用mid_mtx[1][1],它只会更改特定的位置

[[(0, "")] * len(s2)] * len(s1)
上面的表达式创建一个重复相同元素的列表,而不是不同的项。所有项目均为同一项目;更改一个项目会影响所有项目

换句话说,
mid_mtx[0]是mid_mtx[1]
mid_mtx[0]是mid_mtx[2]
。。。。 或者,
id(mid_mtx[0])==id(mid_mtx[1])
id(mid_mtx[0])==id(mid_mtx[2])


以上列表理解将创建一个包含独立项目的列表

由于最内部的项是元组(不可变),因此可以改用以下项:

[[(0, "")] * len(s2) for i in s1]

mid_mtx[i][j]=middle_ij_val位于双for循环中,该循环迭代矩阵中的所有元素。迭代行是外部for循环,col是内部循环。
[[(0, "")] * len(s2) for i in s1]