Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/68.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,可能重复: 我是python的新手。请让我知道为什么stairlist[1][0]=2语句在使用stairlist=[[0,0]]]*8初始化时会更改所有值 >>> stairlist = [[0,0]] * 8 >>> stairlist [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]] >>> stairlist[1][0] = 2 >>>

可能重复:

我是python的新手。请让我知道为什么stairlist[1][0]=2语句在使用stairlist=[[0,0]]]*8初始化时会更改所有值

>>> stairlist = [[0,0]] * 8
>>> stairlist
[[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]]
>>> stairlist[1][0] = 2
>>> stairlist
[[2, 0], [2, 0], [2, 0], [2, 0], [2, 0], [2, 0], [2, 0], [2, 0]]
但是当我根据下面的步骤初始化stairlist变量时,它就可以正常工作了

>>> stairlist = [[1,2],[1,2]]
>>> stairlist
[[1, 2], [1, 2]]
>>> stairlist[1][1] = 3
>>> stairlist
[[1, 2], [1, 3]]

array*number将通过对原始数组中的每个对象创建一个浅拷贝来创建一个新数组,次数为

由于[0,0]本身是一个数组,因此是一个适当的对象,因此新数组只包含一组对同一[0,0]数组的引用。当你改变一个,你就改变了所有的

作为比较:

simplelist = [0] * 8
[0, 0, 0, 0, 0, 0, 0, 0]
simplelist[1] = 2
[0, 2, 0, 0, 0, 0, 0, 0]

array*number将通过对原始数组中的每个对象创建一个浅拷贝来创建一个新数组,次数为

由于[0,0]本身是一个数组,因此是一个适当的对象,因此新数组只包含一组对同一[0,0]数组的引用。当你改变一个,你就改变了所有的

作为比较:

simplelist = [0] * 8
[0, 0, 0, 0, 0, 0, 0, 0]
simplelist[1] = 2
[0, 2, 0, 0, 0, 0, 0, 0]

看起来
[[0,0]]*8
语法使用的是别名而不是独立副本。不确定这是否在规范中,或者是一个实现问题。@jpm:是的,它在规范中。它被称为序列重复。请参阅注释(2),注意副本被定义为浅副本。@FelixKling谢谢,我找到了解决方案。实际上,由于问题标题的问题,我很难找到类似的问题。看起来
[[0,0]]]*8
语法使用别名而不是独立副本。不确定这是否在规范中,或者是一个实现问题。@jpm:是的,它在规范中。它被称为序列重复。请参阅注释(2),注意副本被定义为浅副本。@FelixKling谢谢,我找到了解决方案。实际上,由于题目的问题,我很难找到类似的问题。你说的“因此是一个适当的对象”是什么意思?
int
是合适的对象。此外,该类型称为
列表
。由于并非所有阵列都是这样,因此需要具体说明。你的例子到底想说明什么?你做的事情和他不一样了。如果他做的是stairlist[1]=2,他会得到完全相同的行为。你说的“因此是一个合适的对象”是什么意思?
int
是合适的对象。此外,该类型称为
列表
。由于并非所有阵列都是这样,因此需要具体说明。你的例子到底想说明什么?你做的事情和他不一样了。如果他这样做,他会得到完全相同的行为。