By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
457,877 Members | 1,064 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 457,877 IT Pros & Developers. It's quick & easy.

duplicate items in a list

P: n/a
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
Nov 22 '05 #1
Share this Question
Share on Google+
4 Replies


P: n/a
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

a [[1, 2], [1, 2], [2, 3]] c=[]
for x in a: .... if x not in c: c.append(x)
.... c [[1, 2], [2, 3]]

or (Python 2.4)

a [[1, 2], [1, 2], [2, 3]] set([frozenset(u) for u in a])

set([frozenset([1, 2]), frozenset([2, 3])])

hth Daniel

Nov 22 '05 #2

P: n/a
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

a [[1, 2], [1, 2], [2, 3]] c=[]
for x in a: .... if x not in c: c.append(x)
.... c [[1, 2], [2, 3]]

or (Python 2.4)

a [[1, 2], [1, 2], [2, 3]] set([frozenset(u) for u in a])

set([frozenset([1, 2]), frozenset([2, 3])])

hth Daniel

Nov 22 '05 #3

P: n/a
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.

Nov 22 '05 #4

P: n/a
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.

Nov 22 '05 #5

This discussion thread is closed

Replies have been disabled for this discussion.