• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Allegro X PCB Editor
  3. Remove repeat item from a list

Stats

  • Replies 5
  • Subscribers 158
  • Views 15300
  • Members are here 0
More Content

Remove repeat item from a list

archive
archive over 19 years ago

I have tried some way to remove some repeat item from a list.
Followed is the simple one

foreach(item list
list=cons(item remove(item list))
)

Do anyone have a more available command or fuction?


Originally posted in cdnusers.org by leonlee
  • Sign in to reply
  • Cancel
  • archive
    archive over 19 years ago

    This is what I use...

    procedure(_removeDuplicates(masterList)
    let((finalList)
    foreach(item masterList
    unless(member(item car(finalList))
    finalList=tconc(finalList item)
    )
    )
    finalList
    )
    )

    If your are going through a list of dbids, then you can use memq instead of member to speed this up.


    Originally posted in cdnusers.org by natebizu
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • archive
    archive over 19 years ago

    I use "makeTable" because it doesn't accept duplicates.


    below is code from a program I wrote called highlight_padstacks.il that is in the downloadable user skill zip file from cadence. I make a list by selecting all pins and via, and then load the names into a table.

    padstacklist=makeTable("atable1" 0) 

    axlSetFindFilter(?enabled list("noall" "pins" "vias")
             ?onButtons list("noall" "pins" "vias"))
    axlAddSelectAll()
    pin_list = axlGetSelSet()

    foreach(pin_db pin_list
             
      padstack_db = pin_db->definition     ;Extract PadstackID from pinID
      pad_name=padstack_db->name      ;Extract Padstack Name from PadstackID
      padstacklist[pad_name]=pad_name  ;Load into table as Name:Value
                                                                   
    );end foreach


    Originally posted in cdnusers.org by Geoffm
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • archive
    archive over 18 years ago

    Now I use below code to this solution:

    procedure( RemoveDuplicateItem(A)
    B=nil
    while(A!=nil B=cons(nth(0 A) B) A=remove(nth(0 A) A))
    B
    );procedure


    Originally posted in cdnusers.org by leonlee
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • archive
    archive over 18 years ago

    You could try using the unique function

    For example, this will weed out all duplicate via names from a list:

    via_name_list = unique(sort( via_name_list 'alphalessp))


    A more-generic-but-trickier method involves using a foreach loop and the member funtion.
    Someting like:


    ulist = nil
    foreach( obj obj_list
    unless( member( obj ulist)
    ulist = cons( obj ulist)
    );end-unless
    );end-foreach



    HTH,

    Chris Walters
    local Cadence guru
    ()

    PS - anyone know of a position for a(nother) Cadence guru?



    Originally posted in cdnusers.org by kerchunk
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • archive
    archive over 18 years ago

    It's wonderful for the unique function. which user guide offers these functions?

    I don't know the Cadence guru position. where~~


    Originally posted in cdnusers.org by leonlee
    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
Cadence Guidelines

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information