deleteing item from a copy of a list
Peter Otten
__peter__ at web.de
Tue Nov 14 04:21:32 EST 2006
timmy <"timothy at open-networks.net"> wrote:
> i make a copy of a list, and delete an item from it and it deletes it
> from the orginal as well, what the hell is going on?!?!?!
>
> #create the staff copy of the roster
> Roster2 = []
> for ShiftLine in Roster:
> #delete phone number from staff copy
> Roster2.append(ShiftLine)
> del Roster2[len(Roster2)-1][1]
>
> Roster2 should have nothing to do with Roster, right??? doing a print of
> both lists confirms that the phone number has been removed from both
You seem to have a list of lists and are making a new outer list. The lists
inside that outer list are not copied. You can copy them by calling
list(item) or copy.copy(item):
>>> roster = [
... ["Tim", "12345", "some more"],
... ["Jack", "54321", "whatever"],
... ]
>>> roster2 = []
>>> for item in roster:
... item = list(item)
... del item[1]
... roster2.append(item)
...
>>> roster
[['Tim', '12345', 'some more'], ['Jack', '54321', 'whatever']]
>>> roster2
[['Tim', 'some more'], ['Jack', 'whatever']]
Peter
More information about the Python-list
mailing list