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))

Anyinのインスタンスを削除l2しても変更されないのに、l2 と l3 に違いがないように見えるlのに、 in で削除するとl3変更されるのはなぜですか?l

どうもありがとう!

4

2 に答える 2

5

なぜなら:

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

参照を 2 回バインドすると、両方の名前が同じオブジェクトを参照するようになります。

于 2013-08-23T17:03:14.773 に答える
4

l2から作成された別のオブジェクトですl

l3同じオブジェクトを参照しますllしたがって、 orの何かを変更するl3とそのオブジェクトに影響し、したがって and に影響ll3ます。

于 2013-08-23T17:03:11.840 に答える