On Fri, 09 Jul 2010 23:14:23 +0200, Frederic Rentsch wrote: > I understand that things going out of scope delete themselves. I have > used del on occasion, for instance, to get rid of invalid members of a > list or a dictionary. It has to be done in two passes, though, because > neither can be altered during an iteration. The first pass makes a > delete list of indices or keys, so that the actual deletion iterates > through the delete list, not the object deleted from. > Would you call that a misuse?
No, that is perfectly fine. Pay no attention to anyone who says that del should be avoided. Like all tools, it can be used badly or inefficiently, or by somebody who doesn't understand it, but that's no reason to avoid using del correctly. Another strategy is to make a copy of the dict/list and iterate over that. Copies are fast, since you're only copying the top-level list or dict and not the underlying objects within it. A third is to forget about deleting and create a new list containing only the objects you don't want to delete. All three strategies (two using del, one without) have different use-cases and are perfectly acceptable. -- Steven -- http://mail.python.org/mailman/listinfo/python-list