Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays_Function_Global - Fatal编程技术网

python:我的函数会无缘无故地更改参数

python:我的函数会无缘无故地更改参数,python,arrays,function,global,Python,Arrays,Function,Global,我有这个功能: def change_position(old_particles): inc_r=0.5 inc_angle=0.5 N=len(old_particles) particlesx=old_particles a=random.randint(0,N-1) b=random.randint(0,1) max_angle=np.pi*2 c=random.randint(0,1) print 'old_par

我有这个功能:

def change_position(old_particles):
    inc_r=0.5
    inc_angle=0.5
    N=len(old_particles)
    particlesx=old_particles
    a=random.randint(0,N-1)
    b=random.randint(0,1)
    max_angle=np.pi*2
    c=random.randint(0,1)
    print 'old_particles before change', old_particles
    print 'new before change', particlesx
    if b==1:
        if c==1:
            particlesx[a][b]=particlesx[a][b]+inc_angle
            if particlesx[a][b]>max_angle:
                particlesx[a][b]=particlesx[a][b]-max_angle
            print 'cambiamos particula',a, particlesx[a][b]
    if b==1:
        if c==0:
            particlesx[a][b]=particlesx[a][b]-inc_angle
            if particlesx[a][b]<0:
                particlesx[a][b]=particlesx[a][b]+max_angle
            print 'cambiamos',a, particlesx[a][b]
    if b==0:
        if c==0:
            particlesx[a][b]=particlesx[a][b]+inc_r
            if particlesx[a][b]>1:
                particlesx[a][b]=particlesx[a][b]-inc_r
            print 'cambiamos',a, particlesx[a][b]
    if b==0:
        if c==1:
            particlesx[a][b]=particlesx[a][b]-inc_r
            if particlesx[a][b]<0:
                particlesx[a][b]=particlesx[a][b]+inc_r
            print 'cambiamos',a, particlesx[a][b]
    print'after change', particlesx
    print'old_particles after change', old_particles
    return particlesx, a 
def更改位置(旧粒子):
inc_r=0.5
夹角=0.5
N=len(旧粒子)
particlesx=旧粒子
a=随机随机随机数(0,N-1)
b=随机随机随机数(0,1)
最大角度=np.pi*2
c=随机随机随机数(0,1)
打印“更改前的旧粒子”,旧粒子
打印“更改前新建”,particlesx
如果b==1:
如果c==1:
particlesx[a][b]=particlesx[a][b]+夹角
如果particlesx[a][b]>最大角度:
particlesx[a][b]=particlesx[a][b]-最大角度
打印“cambiamos particula”,a,particlesx[a][b]
如果b==1:
如果c==0:
particlesx[a][b]=particlesx[a][b]-夹角
如果分词x[a][b]1:
particlesx[a][b]=particlesx[a][b]-inc\r
打印“cambiamos”,a,particlesx[a][b]
如果b==0:
如果c==1:
particlesx[a][b]=particlesx[a][b]-inc\r
如果particlesx[a][b]如下:

particlesx=old_particles
不制作列表的副本。相反,它使
particlesx
old_particles
引用同一个列表。当你改变一个,他们都改变

要使两者相互独立,您需要制作一份副本:

import copy
...
particlesx = copy.deepcopy(old_particles)

例如:如果您认为类中的元素是不可变的,那么您也可以使用语法new\u p=old\u p[:]@Ant:在这里,它们不是(元素似乎是列表本身)。因此,我建议使用
deepcopy()