On 28Oct2009 08:23, I wrote: | | I wanted to wind up with r being [[1, 2, 3], [1, 2, 999], [1, 2, 3]]. | | What's the right way to construct r as a list of *independent* d lists? | | Well, you would need to write your own. But consider this: | x = [1, 2] | x.append(x) | Your deepercopy() function will explode.
I've thought of a comprimise that would work automatically: deepcopy tracks all the objects in the structure and replicates their multiple uses. For your purposes, you could write a version of deepcopy that did a depth-first recursion and only tracked the ancestor objects. That way the above x.append(x) recursive list would not duplicate the inner "x", but an "x" in two subbranches of a structure _would_ be replicated i.e. this: x = [1,2] y = [x, x] would get two independent "x"s. However, it would still mean a recursive structure would get non-independent "x"s. Which is necessary to avoid an infinite copy but breaks your requirement. -- Cameron Simpson <c...@zip.com.au> DoD#743 http://www.cskk.ezoshosting.com/cs/ Every technical corrigendum is met by an equally troublesome new defect report. - Norman Diamond <diam...@jit.dec.com> -- http://mail.python.org/mailman/listinfo/python-list