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