It's just a circular data structure, many (or even most) languages give you enough rope to hang yourself with one of those. Nothing particularly surprising or Python-specific about it.
What you have is a circular structure. foo and bar are distinct objects, so foo == bar is false. However, they are similar objects: they have exactly the same structure. If we had a function for structural comparison which handles cycles, that function would have to conclude that foo and bar are structurally equal. This is because of symmetry in the cycle: bar[0] is foo and, symmetrically, foo[0] is bar. Both foo and bar are one-element lists whose elements are, respectively, bar and foo.
6 comments
[ 5.6 ms ] story [ 30.2 ms ] threadIt's just a circular data structure, many (or even most) languages give you enough rope to hang yourself with one of those. Nothing particularly surprising or Python-specific about it.
bar[0] = foo
false
if wrong please correct accordingly.