[Tutor] List-question

Ed Singleton singletoned at gmail.com
Mon Dec 19 14:02:16 CET 2005


On 19/12/05, Øyvind <python at kapitalisten.no> 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[:]


Ed


More information about the Tutor mailing list