Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    sorting an array / list ?

    PYTHON Development
    0
    9
    1.3k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Helper
      last edited by

      THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

      On 07/03/2011 at 23:38, xxxxxxxx wrote:

      Hi Everyone,

      I am trying to sort an array which is called list in python i guess.
      i tried

      boundingbox = activeobject.GetRad()   
      print boundingbox   
      alist = (boundingbox.x, boundingbox.y, boundingbox.z)   
      print alist   
      alist.sort()
      

      which gives me

      AttributeError: 'tuple' object has no attribute 'sort'

      what am I doing wrong ?

      thanks in advance
      mogh

      1 Reply Last reply Reply Quote 0
      • H
        Helper
        last edited by

        THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

        On 08/03/2011 at 02:05, xxxxxxxx wrote:

        as py-doc non c4d's, to sort tuple-object, seems need to use `

        itertools.permutations`( _iterable_ [, _r_ ])
        

        or i'm making mistake?!

        `

        `  
        import c4d,itertools  
        from c4d import gui,documents  
        #Welcome to the world of Python  
          
        def main() :  
          activeobject = doc.GetActiveObject()  
          boundingbox = activeobject.GetRad()  
          
          print boundingbox  
          
          alist = (boundingbox.x, boundingbox.y, boundingbox.z)  
          
          print alist  
          print list(itertools.permutations(alist,2))  
          #alist.sort()  
          
        if __name__=='__main__':  
          main()  
        
        1 Reply Last reply Reply Quote 0
        • H
          Helper
          last edited by

          THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

          On 08/03/2011 at 05:07, xxxxxxxx wrote:

          (200.0, 24.999999999999996, 100.0)

          [(200.0, 24.999999999999996), (200.0, 100.0), (24.999999999999996, 200.0), (24.999999999999996, 100.0), (100.0, 200.0), (100.0, 24.999999999999996)]

          your script gives me this as an output, which is wiered and not sorted at all?

          still - thanks for your help
          regrads mogh

          1 Reply Last reply Reply Quote 0
          • H
            Helper
            last edited by

            THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

            On 08/03/2011 at 05:43, xxxxxxxx wrote:

            product('ABCD', repeat=2) AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD
            permutations('ABCD', 2) AB AC AD BA BC BD CA CB CD DA DB DC
            combinations('ABCD', 2) AB AC AD BC BD CD

            _<_t_>_all work with tuple

            product() p, q, ... [repeat=1] cartesian product, equivalent to a nested for-loop
            permutations() p[, r] r-length tuples, all possible orderings, no repeated elements
            combinations() p[, r] r-length tuples, in sorted order, no repeated elements_/t>
            1 Reply Last reply Reply Quote 0
            • H
              Helper
              last edited by

              THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

              On 08/03/2011 at 06:11, xxxxxxxx wrote:

              hm I guess we missunderstand each other, i want

              (C,B,A,D) => (A,B,C,D)

              but with the single values of a vector like

              (200.0, 24.999999999999996, 100.0) => (200.0, 100.0, 24.999999999999996)

              so when i acces the first of a list

              i get the highes and when i acces the last the smallest number. There is probably a clever version for a min max but i need these 3 values sorted so min max wont do the job completely.

              by the way how do i access the first in the list ?

              alist[1] ???

              kind regards mogh

              1 Reply Last reply Reply Quote 0
              • H
                Helper
                last edited by

                THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                On 08/03/2011 at 07:53, xxxxxxxx wrote:

                you created a tuple instead of a list.. try this:
                alist = [200.0, 24.999999999999996, 100.0]
                print alist
                alist.sort()
                alist.reverse()
                print alist
                print alist[0] #first element

                1 Reply Last reply Reply Quote 0
                • H
                  Helper
                  last edited by

                  THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                  On 09/03/2011 at 01:12, xxxxxxxx wrote:

                  boundingbox = activeobject.GetRad()   
                      print boundingbox   
                      atuple = (boundingbox.x, boundingbox.y, boundingbox.z)   
                      alist = list(atuple)   
                      alist.sort()   
                      alist.reverse()   
                      print alist
                  

                  thanks its working now, but i had to convert the tuple to a list first.
                  thanks for all your help
                  kind regards mogh

                  1 Reply Last reply Reply Quote 0
                  • H
                    Helper
                    last edited by

                    THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                    On 09/03/2011 at 09:14, xxxxxxxx wrote:

                    Well, can i ask Sebastian, can we manipulate tuple objects by native or in-built py-tools?
                    I see that can... or need to use conversation between data-objects as other methods  are impossible?!

                    1 Reply Last reply Reply Quote 0
                    • H
                      Helper
                      last edited by

                      THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                      On 11/03/2011 at 13:32, xxxxxxxx wrote:

                      Tuples aren't like lists, they are meant to be kept "as is" and you can't change their values. They are more like a "constat list". You need to convert them to a list if you want to manipulate them, that's just the way it works in Python.

                      1 Reply Last reply Reply Quote 0
                      • First post
                        Last post