Velocity Reviews > removing common elemets in a list

# removing common elemets in a list

saif.shakeel@gmail.com
Guest
Posts: n/a

 05-16-2007
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

Tim Golden
Guest
Posts: n/a

 05-16-2007
http://www.velocityreviews.com/forums/(E-Mail Removed) 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:

<code>
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
</code>

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

Gary Herron
Guest
Posts: n/a

 05-16-2007
(E-Mail Removed) 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]
>>>

Carsten Haese
Guest
Posts: n/a

 05-16-2007
On Tue, 2007-05-15 at 23:17 -0700, (E-Mail Removed) 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 itertools
>>> L = [1,2,3,3,4,4,5]
>>> [k for (k,_) in itertools.groupby(L, lambda x)]

[1, 2, 3, 4, 5]

HTH,

--
Carsten Haese
http://informixdb.sourceforge.net

John Zenger
Guest
Posts: n/a

 05-16-2007
On May 16, 2:17 am, (E-Mail Removed) 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

import base64
def uniq(v):
return
eval(base64.b64decode('c29ydGVkKGxpc3Qoc2V0KHYpKSx rZXk9bGFtYmRhIHg6di5pbmRleCh4KSk='),locals())

Michael Bentley
Guest
Posts: n/a

 05-16-2007

On May 16, 2007, at 10:36 AM, John Zenger wrote:

> On May 16, 2:17 am, (E-Mail Removed) 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

>
>
> import base64
> def uniq(v):
> return
> eval(base64.b64decode
> ('c29ydGVkKGxpc3Qoc2V0KHYpKSxrZXk9bGFtYmRhIHg6di5p bmRleCh4KSk='),local
> s())

Nice! But I think he said he couldn't use set()

janislaw
Guest
Posts: n/a

 05-17-2007
On May 16, 8:17 am, (E-Mail Removed) 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

post displays 4 different approaches and explores timings:

Fortunately, python code is universal.