Question about idioms for clearing a list
Tim Chase
python.list at tim.thechases.com
Tue Jan 31 12:18:49 EST 2006
> I know that the standard idioms for clearing a list are:
>
> (1) mylist[:] = []
> (2) del mylist[:]
>
> I guess I'm not in the "slicing frame of mind", as someone put it, but
> can someone explain what the difference is between these and:
>
> (3) mylist = []
>
> Why are (1) and (2) preferred? I think the first two are changing the
> list in-place, but why is that better? Isn't the end result the same?
A little example will demonstrate:
>>> x = [1,2,3,4,5]
>>> y = x
>>> z = x
>>> x = []
>>> y
[1, 2, 3, 4, 5]
* >>> z
[1, 2, 3, 4, 5]
>>> y[:]=[]
* >>> z
[]
[*] note the differences in the results of "z", even though we've
never touched "z" explicitly
By using
x = []
you set x, but you do not clear the list that other items (y & z)
reference. If you use either of the two idioms you describe, you
effect all items that reference that list.
-tim
More information about the Python-list
mailing list