Python 不需要时自动实现变量的代码

Python 不需要时自动实现变量的代码,python,numpy,Python,Numpy,我已分离出更大代码的以下部分: import numpy as np population= np.random.normal(0,1,5) individuals=population print(population) for i in range(len(individuals)): individuals[i]=0 print(population) 答复: [-0.1791731-0.0756427 0.44463943-0.51173395 0.9121922] [

我已分离出更大代码的以下部分:

import numpy as np

population= np.random.normal(0,1,5)
individuals=population

print(population)

for i in range(len(individuals)):
    individuals[i]=0

print(population)
答复:

[-0.1791731-0.0756427 0.44463943-0.51173395 0.9121922]
[0. 0. 0. 0. 0.]
我不明白为什么结果不一样

使用
.copy()
如果要复制numpy数组的内容,您现在要做的就是复制指向列表的指针。 所以两个变量都指向相同的数据,所以如果其中一个变量发生变化,它们都会发生变化

import numpy as np

population= np.random.normal(0,1,5)
individuals=population.copy()

print(population)

for i in range(len(individuals)):
    individuals[i]=0

print(population)
对于非numpy列表,您可以使用
[:]
例如

a = [1,2,3]
b = a[:]

我收到一个错误:
未定义名称“pop”
。您的意思是
print(population)
?变量
pop
是什么?此外,您获得此输出的原因是您将个人作为population的参考,因此您在更改个人时更改了population。或者更改了pop,这是一个错误。您将for循环中的每个项目更改为
0
。。。你想用for循环实现什么?哦,我明白了,我刚刚用[:]进行了测试,正如你所说的,它对numpy list不起作用。我目前正在尝试使用.copy(),它适用于我在这里给出的示例,但我目前正在我的主代码中实现它。如果我有更多的问题,我会回来找你。非常感谢你!使用
population.copy()
而不是
[:]
,如答案中所述,该答案适用于非numpy列表