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...
> > -- > Steven. -- http://mail.python.org/mailman/listinfo/python-list