removing common elemets in a list

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • saif.shakeel@gmail.com

    removing common elemets in a list

    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

    #2
    Re: removing common elemets in a list

    saif.shakeel@gm ail.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

    Comment

    • Gary Herron

      #3
      Re: removing common elemets in a list

      saif.shakeel@gm ail.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]
      >>>

      Comment

      • Carsten Haese

        #4
        Re: removing common elemets in a list

        On Tue, 2007-05-15 at 23:17 -0700, saif.shakeel@gm ail.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.group by:
        >>import itertools
        >>L = [1,2,3,3,4,4,5]
        >>[k for (k,_) in itertools.group by(L, lambda x:x)]
        [1, 2, 3, 4, 5]

        HTH,

        --
        Carsten Haese



        Comment

        • John Zenger

          #5
          Re: removing common elemets in a list

          On May 16, 2:17 am, saif.shak...@gm ail.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.b64 decode('c29ydGV kKGxpc3Qoc2V0KH YpKSxrZXk9bGFtY mRhIHg6di5pbmRl eCh4KSk='),loca ls())

          Comment

          • Michael Bentley

            #6
            Re: removing common elemets in a list


            On May 16, 2007, at 10:36 AM, John Zenger wrote:
            On May 16, 2:17 am, saif.shak...@gm ail.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.b64 decode
            ('c29ydGVkKGxpc 3Qoc2V0KHYpKSxr ZXk9bGFtYmRhIHg 6di5pbmRleCh4KS k='),local
            s())
            Nice! But I think he said he couldn't use set() ;-)


            Comment

            • janislaw

              #7
              Re: removing common elemets in a list

              On May 16, 8:17 am, saif.shak...@gm ail.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:



              Fortunately, python code is universal.

              Comment

              Working...