0

这是一个小脚本:

class Any(object):
    def __init__(self,x):
        self.x=x

l = [Any(2),Any(3),Any(7),Any(9),Any(10)]
print(len(l))
l2=[ind for ind in l]
l3=l
print(set(l2).difference(l3))
print(l2[1]==l[1])
print(l3[1]==l[1])
del l2[1]
print(len(l))
del l3[1]
print(len(l))

Any为什么删除in的实例l2不会改变l,但在l3改变中删除它,l尽管 l2 和 l3 之间似乎没有任何区别?

非常感谢!

4

2 回答 2

5

因为:

>>> l is l2
False
>>> l is l3
True

绑定引用两次使两个名称都引用同一个对象。

于 2013-08-23T17:03:14.773 回答
4

l2是从创建的不同对象l

l3指的是与相同的对象l。因此,更改lor中的任何内容l3都会影响该对象,因此会影响land l3

于 2013-08-23T17:03:11.840 回答