Python:一个被赋值而未被更改的变量会随着另一个变量的变化而变化

Python:一个被赋值而未被更改的变量会随着另一个变量的变化而变化,python,initialization,sage,Python,Initialization,Sage,在Sage工作,我相信这基本上就是python。我给出了以下代码 def lfsr_1(regs,tabs): I=regs leng=len(I) count=0 while True: FB=0 print "Before" print I print regs print temp for i in range(0,leng): FB=FB

在Sage工作,我相信这基本上就是python。我给出了以下代码

def lfsr_1(regs,tabs):
    I=regs
    leng=len(I)
    count=0
    while True:
        FB=0
        print "Before"
        print I
        print regs
        print temp
        for i in range(0,leng):
            FB=FB+tabs[i]*I[i]   //Calculating the feedback value
        for i in range(0,leng):
            regs[leng-(i+1)]=regs[leng-(i+1)-1] //Shifting regs one bit to the right
        I[0]=FB   //Adding the feedback at the end
        count=count+1  //Incrementing count value which will contain the periodicity
        print "After"
        print I
        print regs
        print temp
        if (I==regs):   //End when the initial state is repeated again. Now, count will contain the periodicity
            break
输入变量初始化如下

tabs=[GF(2)(1),0,0,1,1,1]
regs=[GF(2)(0),1,1,0,1,1]
temp=regs
但是,我得到的输出是:

Before
[0, 0, 1, 1, 0, 1]
[0, 0, 1, 1, 0, 1]
[0, 0, 1, 1, 0, 1]
After
[0, 0, 0, 1, 1, 0]
[0, 0, 0, 1, 1, 0]
[0, 0, 0, 1, 1, 0]
不知道这是怎么发生的,因为“I”随“regs”一起变化我的代码从未改变。我的作业有什么问题吗


附录:尝试实现线性反馈移位寄存器。该代码用于计算LFSR的周期性。regs是初始状态,I用于检查regs何时再次返回初始状态(以计算周期性),temp只是一个测试变量,以查看是否还会移动另一个初始化变量。

当然
I
会随着
regs
而变化,因为您进行了此分配:

I=regs
现在
I
regs
引用相同的列表。这就是Python的工作原理。列表变量仅引用列表对象,它不包含整个列表对象

下面是一个例子:

a = [1,2,3]
b = a
a[1] = 100
print b
也许你想让
I
成为
regs
的副本

尝试:


当然,如果
reg
包含对象,您可能会有“结构共享”。

当然
I
会随着
regs
而变化,因为您进行了以下分配:

I=regs
现在
I
regs
引用相同的列表。这就是Python的工作原理。列表变量仅引用列表对象,它不包含整个列表对象

下面是一个例子:

a = [1,2,3]
b = a
a[1] = 100
print b
也许你想让
I
成为
regs
的副本

尝试:


当然,如果
reg
包含对象,您可能会有“结构共享”。

问题在于行

I=regs

执行此操作时,您不会复制
regs
的内容,而是将引用复制到
regs
。因此,使
I
regs
成为同一个数组。

问题在于行

I=regs

执行此操作时,您不会复制
regs
的内容,而是将引用复制到
regs
。因此,将
I
regs
放在同一个数组中。

如果你能提供一些关于你的最终目标的信息,并对你的代码进行注释,那么帮助你就会容易得多。如果你能提供一些关于你的最终目标的信息,并对你的代码进行注释,那么帮助你就会容易得多。