An oddity in list comparison and element assignment

Slawomir Nowaczyk slawomir.nowaczyk.847 at student.lu.se
Thu Jun 1 18:40:47 EDT 2006


On Thu, 01 Jun 2006 15:12:23 -0700
michael.f.ellis at gmail.com wrote:

#> I believe that 'is' tests equality of reference, such that
#> 
#> >>> a = range(1,3)
#> >>> b = range(1,3)
#> >>> a is b
#> False
#> 
#> The 'is' operator tells you whether a and b refer to the same object.
#> What I've been discussing is whether == should test for "structural"
#> equality so that a and b remain equivalent under parallel mutations
#> (and also under single mutations to common references)

What does "parallel mutations" mean? In particular, what should be the
results of each of the following three comparisons:

x, y, z = [1],[1],[1]
a, b = [x,y], [y,z]
c, d = [[1],[1]], [[1],[1]]
a == b
c == d
a[0].remove(1)
b[0].remove(1)
a == b

So, do I understand correctly that you would like first comparison
(a==b) to return "False" and second comparison (c==d) to return
"True"?

-- 
 Best wishes,
   Slawomir Nowaczyk
     ( Slawomir.Nowaczyk at cs.lth.se )

Living on Earth may be expensive, but it includes
an annual free trip around the Sun.




More information about the Python-list mailing list