On 19/12/05, Ed Singleton <[EMAIL PROTECTED]> wrote: > On 19/12/05, Øyvind <[EMAIL PROTECTED]> wrote: > > I have one function that finds some values. Then I want that function to > > find new values based on the values it found first. However, by just > > looping, it starts on an eternal job. > > > > As illustrated in: > > >>> list = [1,2,3] > > >>> list2 = list > > >>> list2 > > [1, 2, 3] > > >>> for i in list: > > ... print i > > ... list2.append(4) > > ... > > 1 > > 2 > > 3 > > 4 > > 4 > > 4 and it will forever continue with 4's. > > > > Why would list be expanded with the values of list2? How can I copy the > > result from one list, and do things with the list without getting it to > > expand? > > Because they point to the same thing. > > Type "list2 is list" after your other code and see. > > You want list2 to be a COPY of list not a pointer to it. Do this by using > > list2 = list.copy() > > Slices create a copy, so a shortcut is: > > list2 = list[:]
Sorry, you need to: from copy import copy before you can use copy. Also, you shouldn't use "list" as a variable name. as it is a built-in function that converts things to lists. Use "list1". That way you can also use list2 = list(list1). Ed _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor