By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
443,965 Members | 1,631 Online
Bytes IT Community
+ Ask a Question
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
Share this Question
Share on Google+
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:

<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
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 itertools
L = [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 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
('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.