SpreadTooThin wrote: > Steven D'Aprano wrote: >> On Mon, 30 Oct 2006 13:10:47 -0800, SpreadTooThin wrote: >> >>>>> How do I specify or create deep copies of objects that may contain >>>>> other objects that may contain other object that may contain other >>>>> objects.... >>>> See the `copy` module especially `copy.deepcopy()`. >>>> >>> This appears to be the right thing to do to me.. (but what do I know?) >> Yes, copy.deepcopy() is the thing you want. >> >> But remember Fredrik's advice that well-designed Python code should not >> need to copy data structures often. I don't think I've ever needed to use >> deepcopy, and rarely copy.copy(). >> >> In general, functions should not modify their caller's data. So this is >> bad practice: >> >> def print_list(alist): >> """Print a sorted list""" >> alist.sort() # modifies the caller's data -- bad! >> for index, value in enumerate: >> print "Value %s at index %d" % (index, value) >> >> This is better: >> >> def print_list(alist): >> """Print a sorted list""" >> alist = alist[:] # makes a local shallow copy of the list >> alist.sort() # safe to modify now >> for index, value in enumerate: >> print "Value %s at index %d" % (index, value) >> >> But notice that you only need a shallow copy, not a deep copy, because you >> aren't modifying the objects within the list, only the list itself. >> >> >> >>> I tried this which more closely resembles my project but this doesn't >>> work: >> Unfortunately my crystal ball is back at the shop being repaired, so >> you'll have to explain what "doesn't work" means in this case. Does it >> raise an exception? If so, please post the exception. Does it do something >> different from what you expected? Then what did you expect, and what did >> it do? >> > I seems that some of the objects in the list don't get along well with > deep copy.. > See my second example post that used deepcopy... When run blows up... > When it blows up, is there a lot of shrapnel, or just smoke and fire? Is the shrapnel mostly metal, or is it plastic and glass?
In short, if we don't know what's happening, we can't help. * Did the program spit out a bunch of text you didn't understand? If so, show us the text. That text may be incomprehensible at first, but it contains crucial clues. * Did it close your python window without a word? Tell us. * Did your computer freeze up? Tell us. If you don't tell us what went wrong *exactly*, you won't get a satisfactory answer. Cheers, Cliff -- http://mail.python.org/mailman/listinfo/python-list