Is this a bug in Python or something I do not understand.
Miles
semanticist at gmail.com
Thu Jan 1 13:20:51 EST 2009
On Thu, Jan 1, 2009 at 1:13 PM, <davidalvi at gmail.com> wrote:
> Consider these two lists comprehensions:
>
> L1=[[1 for j in range(3)] for i in range(3)]
> L2=[[1]*3]*3
>
[snip]
>
> It seems a misbehaviour in Python, or there is something I do not
> understand in the syntax ????
It's not a Python bug. Does this help illuminate the difference?
>>> L1 = [object() for j in range(3)]
>>> L2 = [object()] * 3
>>> [id(o) for o in L1]
[164968, 164976, 164984]
>>> L1[0] is L1[1]
False
>>> [id(o) for o in L2]
[164992, 164992, 164992]
>>> L2[0] is L2[1]
True
-Miles
More information about the Python-list
mailing list