On 06/12/05, Hans Dushanthakumar <[EMAIL PROTECTED]> wrote: > > Thanks guys > > Yes either of the foll solves the problem: > > b = junk(copy.copy(a)) > > OR > > b = junk(a[:])
One thing you should be aware of --- these will both do a "shallow copy". Example: >>> lists = [[], [], [], []] >>> lists2 = lists[:] >>> lists.append('foo') >>> lists, lists2 # This shows that lists and lists2 are different. ([[], [], [], [], 'foo'], [[], [], [], []]) >>> lists[0].append(13) >>> lists, lists2 # Oops, but lists[0] and lists2[0] are the same! ([[13], [], [], [], 'foo'], [[13], [], [], []]) > Why is there a difference between the way the two lines (x.append("20") and > x = "30") are handled within a function? x = '30' will create a new (local) variable x and give it the value '30'. x.append('20') will call the .append() method on x. Calling this method has the side effect of changing the list x points to. -- John. _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor