Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/grails/5.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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_Jupyter Lab - Fatal编程技术网

Python 为什么错误地将值赋给数组?

Python 为什么错误地将值赋给数组?,python,jupyter-lab,Python,Jupyter Lab,我是python和编程新手。遗憾的是,我很快就在一项简单的任务中遇到了问题,并且找不到答案。下面,我举一个简短的例子: a0=np.ones(10); a1=a0; a2=a0; sum1=3; sum2=2; a1[0]=sum1; a2[0]=sum2; print(a1) 然而,数组a1的第一个元素是2而不是3。是否有人愿意向我解释为什么,并另外向我展示一个适当的方式来实现这一点?在实际任务中,我将为不同的时间段运行循环。在每个循环中,我生成不同的值,例如平均值、中值和总和。(与短示例中

我是python和编程新手。遗憾的是,我很快就在一项简单的任务中遇到了问题,并且找不到答案。下面,我举一个简短的例子:

a0=np.ones(10);
a1=a0;
a2=a0;
sum1=3;
sum2=2;
a1[0]=sum1;
a2[0]=sum2;
print(a1)
然而,数组a1的第一个元素是2而不是3。是否有人愿意向我解释为什么,并另外向我展示一个适当的方式来实现这一点?在实际任务中,我将为不同的时间段运行循环。在每个循环中,我生成不同的值,例如平均值、中值和总和。(与短示例中的sum1和sum2类似)这些值被赋予已定义长度的数组(如a1和a2)。
顺便说一下,我使用JupyterLab运行python 3。

如果指定
a1=a0
,则表示数组
a1
引用
a0
。换句话说,将
a0
绑定到与
a1
相同的值

您将看到指向同一列表的所有变量的变化

为了避免这种情况,您应该复制数组
a0
,这样它们就不会相互引用:

a0=np.ones(10)
a1=a0.copy()
a2=a0.copy()
sum1=3
sum2=2
a1[0]=sum1
a2[0]=sum2
print(a0)
print(a1)
print(a2)
产出如下:

a0 : array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
a1 : array([3., 1., 1., 1., 1., 1., 1., 1., 1., 1.])
a2 : array([2., 1., 1., 1., 1., 1., 1., 1., 1., 1.])

为什么在每行末尾都用分号?Python不需要分号。除了分号问题,为什么代码中没有空格?在下面,我制作了一个简短的示例,它可能也值得与示例一起分享您的整个程序。我认为这是的一个副本,它本身被标记为的副本。@nerdguy我在编程时没有在代码中添加分号,但我不确定这样做是否正确。在我发布问题之前,我发现了一些其他发布的问题,示例代码以分号结尾,我认为这可能会更好,所以我只是跟着。谢谢你的评论,现在我知道什么是标准。@AMC你是对的,这个问题是重复的。这也是关于参考,我以前不知道。谢谢你的参考,我通过复制数组来解决这个问题。