• 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. Custom IC SKILL
  3. Reformatting of a list

Stats

  • Locked Locked
  • Replies 4
  • Subscribers 143
  • Views 14282
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Reformatting of a list

Frederic Drape
Frederic Drape over 9 years ago

Hi everybody,

I have a list that look something like that:

list1 = list(list("a" "1" "1") list("a" "1" "2") list("a" "2" "3") list("b" "5" "5") list("b" "5" "6") list("b" "7" "8"))

and I want this list to be reformatted to look like that:

list2 = list(list("a" list("1,1" "1,2" "2,3")) list("b" list("5,5" "5,6" "7,8")))


Anybody have an elegant way of doing that???

Thanks

Fred

  • Cancel
Parents
  • dmay
    dmay over 9 years ago

    Here is one way to do it:

    list1 = list(list("a" "1" "1") list("a" "1" "2") list("a" "2" "3") list("b" "5" "5") list("b" "5" "6") list("b" "7" "8"))
    tbl = makeTable("test" nil)
    foreach(x list1 tbl[car(x)] = append1(tbl[car(x)] buildString(cdr(x) ",")))
    list2 = tableToList(tbl)

    A couple of comments about this:

    1. I try to avoid "append" and "append1" as much as possible for performance reasons. The "cons" command is usually a better choice, but it adds to the front of the list. In this case, your list is short so if we know that will always be the case, this will work.

    2. I prefer tables to complicated lists. Your list2 table looks like a key/value pair, so maybe you don't need the final "tableToList" command and can work with the table instead. Tables are much more efficient and in this case it is a cleaner simpler structure.

    3. If what you are describing has to do with lists of points, then there are more things I would change.

    I hope that helps.

    Derek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Reply
  • dmay
    dmay over 9 years ago

    Here is one way to do it:

    list1 = list(list("a" "1" "1") list("a" "1" "2") list("a" "2" "3") list("b" "5" "5") list("b" "5" "6") list("b" "7" "8"))
    tbl = makeTable("test" nil)
    foreach(x list1 tbl[car(x)] = append1(tbl[car(x)] buildString(cdr(x) ",")))
    list2 = tableToList(tbl)

    A couple of comments about this:

    1. I try to avoid "append" and "append1" as much as possible for performance reasons. The "cons" command is usually a better choice, but it adds to the front of the list. In this case, your list is short so if we know that will always be the case, this will work.

    2. I prefer tables to complicated lists. Your list2 table looks like a key/value pair, so maybe you don't need the final "tableToList" command and can work with the table instead. Tables are much more efficient and in this case it is a cleaner simpler structure.

    3. If what you are describing has to do with lists of points, then there are more things I would change.

    I hope that helps.

    Derek

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
Children
No Data

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