443,965 Members | 1,631 Online
Need help? Post your question and get tips & solutions from a community of 443,965 IT Pros & Developers. It's quick & easy.

# removing common elemets in a list

 P: n/a Hi, Suppose i have a list v which collects some numbers,how do i remove the common elements from it ,without using the set() opeartor. Thanks May 16 '07 #1
6 Replies

 P: n/a sa**********@gmail.com wrote: Hi, Suppose i have a list v which collects some numbers,how do i remove the common elements from it ,without using the set() opeartor. Is this a test? Why don't you want to use the set operator? Anyway, you can just move things from one list into another excluding those which are already moved: numbers = [1, 2, 3, 3, 4, 4, 5] unique_numbers = [] for n in numbers: if n not in unique_numbers: unique_numbers.append (n) print unique_numbers It won't be the fastest thing you could do, but it does work. Using a dictionary would speed things up, but then you're basically implementing a set using a dictionary. TJG May 16 '07 #2

 P: n/a sa**********@gmail.com wrote: Hi, Suppose i have a list v which collects some numbers,how do i remove the common elements from it ,without using the set() opeartor. Thanks Several ways, but probably not as efficient as using a set. (And why don't you want to use a set, one wonders???) >>l = [1,2,3,1,2,1] Using a set: >>set(l) set([1, 2, 3]) Building the list element by element: >>for e in l: .... if e not in r: .... r.append(e) .... >>print r [1, 2, 3] Using a dictionary: >>d = dict(zip(l,l))d {1: 1, 2: 2, 3: 3} >>d.keys() [1, 2, 3] >>> May 16 '07 #3

 P: n/a On Tue, 2007-05-15 at 23:17 -0700, sa**********@gmail.com wrote: Hi, Suppose i have a list v which collects some numbers,how do i remove the common elements from it ,without using the set() opeartor. Thanks If the list is sorted, you can weed out the duplicates with itertools.groupby: >>import itertoolsL = [1,2,3,3,4,4,5][k for (k,_) in itertools.groupby(L, lambda x:x)] [1, 2, 3, 4, 5] HTH, -- Carsten Haese http://informixdb.sourceforge.net May 16 '07 #4

 P: n/a On May 16, 2:17 am, saif.shak...@gmail.com wrote: Hi, Suppose i have a list v which collects some numbers,how do i remove the common elements from it ,without using the set() opeartor. Thanks Submit this as your homework answer -- it will blow your TA's mind! import base64 def uniq(v): return eval(base64.b64decode('c29ydGVkKGxpc3Qoc2V0KHYpKSx rZXk9bGFtYmRhIHg6di5pbmRleCh4KSk='),locals()) May 16 '07 #5

 P: n/a On May 16, 2007, at 10:36 AM, John Zenger wrote: On May 16, 2:17 am, saif.shak...@gmail.com wrote: >Hi, Suppose i have a list v which collects some numbers,how do iremove the common elements from it ,without using the set() opeartor. Thanks Submit this as your homework answer -- it will blow your TA's mind! import base64 def uniq(v): return eval(base64.b64decode ('c29ydGVkKGxpc3Qoc2V0KHYpKSxrZXk9bGFtYmRhIHg6di5p bmRleCh4KSk='),local s()) Nice! But I think he said he couldn't use set() ;-) May 16 '07 #6

 P: n/a On May 16, 8:17 am, saif.shak...@gmail.com wrote: Hi, Suppose i have a list v which collects some numbers,how do i remove the common elements from it ,without using the set() opeartor. Thanks There was a similar thread on polish python newsletter. The following post displays 4 different approaches and explores timings: http://groups.google.com/group/pl.co...3618b18e63f3c9 Fortunately, python code is universal. May 17 '07 #7

### This discussion thread is closed

Replies have been disabled for this discussion.