{eval=Array;=+count(Array);}
Id:唯一标识一个对象
Type:标识对象的类型
Value:对象的值
执行结果:
发现l与l1实际是指向同一个对象,l2指向了新的对象(切片生成的新对象)。
l1 is l2 判断 l1 对象是否就是l2对象(通过id来判断)
l1 == l2 判断 l1 对象的值是否和 l2 对象的值相等(通过value来判断)
前面这个是将对象绑定一个新的变量,L1和L还是指向同一个对象,后后者将对象拷贝一份在赋值给L1,L1指向了新的对象(就是用切片生成的新对象)
这两者是有区别的,先看下面例子:
>>>L=[1,2,3,4]
>>>L1=L
>>>L2=L[:]
>>>L[1]=5
>>>L
[1,5,3,4]
>>>L1
[1,5,3,4]
>>>L2
[1,2,3,4]
L改变后,L1跟着变,L2并不改变。列表变量是这样实现的:
首先有列表值,例如上面的[1,2,3,4],存在计算机某一单元中,我们假定此单元是编号没。在L中实际上放的是单元编号m,当我们把L赋值给L1时,L1中放入的也是m。所以当我们更改L时,python解释程序,先根据L中的单元编号,找到存放列表值的单元,然后更改此单元的内容。由于L1与L中都是编号m,所以两者同时更改。L2时L的一部分,是新的列表,所以放入不同的单元。
4
回答1
回答0
回答0
回答0
回答2
回答0
回答0
回答0
回答0
回答