On Mon, 21 Nov 2005 02:49:56 -0800, Shi Mu wrote: > I used the following method to remove duplicate items in a list and > got confused by the error. > >>>> a > [[1, 2], [1, 2], [2, 3]] >>>> noDups=[ u for u in a if u not in locals()['_[1]'] ] > Traceback (most recent call last): > File "<interactive input>", line 1, in ? > TypeError: iterable argument required
Confused by the error? I'm confused by your code!!! If you want to remove duplicate items in a list, try something like this: def remove_dups(L): """Removes duplicate items from list L in place.""" # Work backwards from the end of the list. for i in range(len(L)-1, -1, -1): # Check to see if the current item exists elsewhere in # the list, and if it does, delete it. if L[i] in L[:i]: del L[i] Instead of deleting duplicate items in place, we can create a new list containing just the unique items: def unique_items(L): """Returns a new list containing the unique items from L.""" U = [] for item in L: if item not in U: U.append(item) return U The trick you are trying to do with _ is undocumented and, even if you get it to work *now*, is probably not going to work in the future. Don't do it. -- Steven. -- http://mail.python.org/mailman/listinfo/python-list