Consider these two lists comprehensions:

L1=[[1 for j in range(3)] for i in range(3)]
L2=[[1]*3]*3

print L1
print L2
print L1==L2

The result is:

[[1, 1, 1], [1, 1, 1], [1, 1, 1]]
[[1, 1, 1], [1, 1, 1], [1, 1, 1]]
True

So far, everything is OK, but let us now modify the lists' contents in
the following way:

for i in range(3):
    for j in range(3):
        if j<i:
            L1[i][j]=0
            L2[i][j]=0
print L1
print L2
print L1==L2

The output is now:

[[1, 1, 1], [0, 1, 1], [0, 0, 1]]
[[0, 0, 1], [0, 0, 1], [0, 0, 1]]
False

It seems a misbehaviour in Python, or there is something I do not
understand in the syntax ????
--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to