I would have guessed that calling list() on a list was a noop. I would be wrong. Surprised, but wrong.
I guess it's probably worth pointing out that most builtin mutable types can be copied using the type constructor:
py> def check(obj): ... copy = type(obj)(obj) ... print id(obj), id(copy) ... return copy ... py> check([1, 2]) 18124312 18124752 [1, 2] py> check({1:2}) 18102720 18126720 {1: 2} py> check(set([1, 2])) 9675672 9675504 set([1, 2])
For immutable types, this is indeed basically a noop:
py> check(12) 3303412 3303412 12 py> check('12') 18120128 18120128 '12' py> check((1, 2)) 18122552 18122552 (1, 2)
Steve -- http://mail.python.org/mailman/listinfo/python-list