Single list rotation of the first half with the other half, including odd number of elements









up vote
0
down vote

favorite












l = [4,5,7,9,10,12]

def rotation(l,n):
return l[n:] + l[:n]

print rotation(l,3)


Let "l" be the above mentioned list, with the above code I am able to rotate the first half [4,5,7] with the other half [9,10,12], getting the desired output [9, 10, 12, 4, 5, 7]. However what I am trying to do and I cannot figure out, is in the case when we have an odd number of elements. Let's say l = [4,5,7,8,9,10,12] I want the odd number that is in the middle, in this case [8], to remain in the middle, and the first half to rotate with the last half, getting the output in this case [9,10,12,8,4,5,7]



Thanks in advance.










share|improve this question



























    up vote
    0
    down vote

    favorite












    l = [4,5,7,9,10,12]

    def rotation(l,n):
    return l[n:] + l[:n]

    print rotation(l,3)


    Let "l" be the above mentioned list, with the above code I am able to rotate the first half [4,5,7] with the other half [9,10,12], getting the desired output [9, 10, 12, 4, 5, 7]. However what I am trying to do and I cannot figure out, is in the case when we have an odd number of elements. Let's say l = [4,5,7,8,9,10,12] I want the odd number that is in the middle, in this case [8], to remain in the middle, and the first half to rotate with the last half, getting the output in this case [9,10,12,8,4,5,7]



    Thanks in advance.










    share|improve this question

























      up vote
      0
      down vote

      favorite









      up vote
      0
      down vote

      favorite











      l = [4,5,7,9,10,12]

      def rotation(l,n):
      return l[n:] + l[:n]

      print rotation(l,3)


      Let "l" be the above mentioned list, with the above code I am able to rotate the first half [4,5,7] with the other half [9,10,12], getting the desired output [9, 10, 12, 4, 5, 7]. However what I am trying to do and I cannot figure out, is in the case when we have an odd number of elements. Let's say l = [4,5,7,8,9,10,12] I want the odd number that is in the middle, in this case [8], to remain in the middle, and the first half to rotate with the last half, getting the output in this case [9,10,12,8,4,5,7]



      Thanks in advance.










      share|improve this question















      l = [4,5,7,9,10,12]

      def rotation(l,n):
      return l[n:] + l[:n]

      print rotation(l,3)


      Let "l" be the above mentioned list, with the above code I am able to rotate the first half [4,5,7] with the other half [9,10,12], getting the desired output [9, 10, 12, 4, 5, 7]. However what I am trying to do and I cannot figure out, is in the case when we have an odd number of elements. Let's say l = [4,5,7,8,9,10,12] I want the odd number that is in the middle, in this case [8], to remain in the middle, and the first half to rotate with the last half, getting the output in this case [9,10,12,8,4,5,7]



      Thanks in advance.







      python list rotation






      share|improve this question















      share|improve this question













      share|improve this question




      share|improve this question








      edited Nov 10 at 13:33

























      asked Nov 10 at 13:14









      Unix

      3410




      3410






















          2 Answers
          2






          active

          oldest

          votes

















          up vote
          1
          down vote



          accepted










          def rotation(l,n):
          if len(l) % 2 == 0:
          return l[n:] + l[:n]
          else:
          return l[-n:] + [l[n]] + l[:n]





          share|improve this answer
















          • 1




            Thank you for clarification!@mehrdad-pedramfar
            – Unix
            Nov 10 at 14:21

















          up vote
          1
          down vote













          If I get the point, this could work.



          But I don't see the need to pass the second parameter to the method (unless you are looking for something different).



          def rotation(l):
          size = len(l)
          n = size // 2
          res = l[-n:] + l[:n] if size % 2 == 0 else l[-n:] + [l[n]] + l[:n]
          return res

          print(rotation([4,5,7,8,9,10])) #=> [8, 9, 10, 4, 5, 7]
          print(rotation([4,5,7,8,9,10,12])) #=> [9, 10, 12, 8, 4, 5, 7]





          share|improve this answer
















          • 1




            Thanks for your time!
            – Unix
            Nov 10 at 14:22










          Your Answer






          StackExchange.ifUsing("editor", function ()
          StackExchange.using("externalEditor", function ()
          StackExchange.using("snippets", function ()
          StackExchange.snippets.init();
          );
          );
          , "code-snippets");

          StackExchange.ready(function()
          var channelOptions =
          tags: "".split(" "),
          id: "1"
          ;
          initTagRenderer("".split(" "), "".split(" "), channelOptions);

          StackExchange.using("externalEditor", function()
          // Have to fire editor after snippets, if snippets enabled
          if (StackExchange.settings.snippets.snippetsEnabled)
          StackExchange.using("snippets", function()
          createEditor();
          );

          else
          createEditor();

          );

          function createEditor()
          StackExchange.prepareEditor(
          heartbeatType: 'answer',
          convertImagesToLinks: true,
          noModals: true,
          showLowRepImageUploadWarning: true,
          reputationToPostImages: 10,
          bindNavPrevention: true,
          postfix: "",
          imageUploader:
          brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
          contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
          allowUrls: true
          ,
          onDemand: true,
          discardSelector: ".discard-answer"
          ,immediatelyShowMarkdownHelp:true
          );



          );













           

          draft saved


          draft discarded


















          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53239301%2fsingle-list-rotation-of-the-first-half-with-the-other-half-including-odd-number%23new-answer', 'question_page');

          );

          Post as a guest






























          2 Answers
          2






          active

          oldest

          votes








          2 Answers
          2






          active

          oldest

          votes









          active

          oldest

          votes






          active

          oldest

          votes








          up vote
          1
          down vote



          accepted










          def rotation(l,n):
          if len(l) % 2 == 0:
          return l[n:] + l[:n]
          else:
          return l[-n:] + [l[n]] + l[:n]





          share|improve this answer
















          • 1




            Thank you for clarification!@mehrdad-pedramfar
            – Unix
            Nov 10 at 14:21














          up vote
          1
          down vote



          accepted










          def rotation(l,n):
          if len(l) % 2 == 0:
          return l[n:] + l[:n]
          else:
          return l[-n:] + [l[n]] + l[:n]





          share|improve this answer
















          • 1




            Thank you for clarification!@mehrdad-pedramfar
            – Unix
            Nov 10 at 14:21












          up vote
          1
          down vote



          accepted







          up vote
          1
          down vote



          accepted






          def rotation(l,n):
          if len(l) % 2 == 0:
          return l[n:] + l[:n]
          else:
          return l[-n:] + [l[n]] + l[:n]





          share|improve this answer












          def rotation(l,n):
          if len(l) % 2 == 0:
          return l[n:] + l[:n]
          else:
          return l[-n:] + [l[n]] + l[:n]






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 10 at 14:13









          mehrdad-pedramfar

          3,44011232




          3,44011232







          • 1




            Thank you for clarification!@mehrdad-pedramfar
            – Unix
            Nov 10 at 14:21












          • 1




            Thank you for clarification!@mehrdad-pedramfar
            – Unix
            Nov 10 at 14:21







          1




          1




          Thank you for clarification!@mehrdad-pedramfar
          – Unix
          Nov 10 at 14:21




          Thank you for clarification!@mehrdad-pedramfar
          – Unix
          Nov 10 at 14:21












          up vote
          1
          down vote













          If I get the point, this could work.



          But I don't see the need to pass the second parameter to the method (unless you are looking for something different).



          def rotation(l):
          size = len(l)
          n = size // 2
          res = l[-n:] + l[:n] if size % 2 == 0 else l[-n:] + [l[n]] + l[:n]
          return res

          print(rotation([4,5,7,8,9,10])) #=> [8, 9, 10, 4, 5, 7]
          print(rotation([4,5,7,8,9,10,12])) #=> [9, 10, 12, 8, 4, 5, 7]





          share|improve this answer
















          • 1




            Thanks for your time!
            – Unix
            Nov 10 at 14:22














          up vote
          1
          down vote













          If I get the point, this could work.



          But I don't see the need to pass the second parameter to the method (unless you are looking for something different).



          def rotation(l):
          size = len(l)
          n = size // 2
          res = l[-n:] + l[:n] if size % 2 == 0 else l[-n:] + [l[n]] + l[:n]
          return res

          print(rotation([4,5,7,8,9,10])) #=> [8, 9, 10, 4, 5, 7]
          print(rotation([4,5,7,8,9,10,12])) #=> [9, 10, 12, 8, 4, 5, 7]





          share|improve this answer
















          • 1




            Thanks for your time!
            – Unix
            Nov 10 at 14:22












          up vote
          1
          down vote










          up vote
          1
          down vote









          If I get the point, this could work.



          But I don't see the need to pass the second parameter to the method (unless you are looking for something different).



          def rotation(l):
          size = len(l)
          n = size // 2
          res = l[-n:] + l[:n] if size % 2 == 0 else l[-n:] + [l[n]] + l[:n]
          return res

          print(rotation([4,5,7,8,9,10])) #=> [8, 9, 10, 4, 5, 7]
          print(rotation([4,5,7,8,9,10,12])) #=> [9, 10, 12, 8, 4, 5, 7]





          share|improve this answer












          If I get the point, this could work.



          But I don't see the need to pass the second parameter to the method (unless you are looking for something different).



          def rotation(l):
          size = len(l)
          n = size // 2
          res = l[-n:] + l[:n] if size % 2 == 0 else l[-n:] + [l[n]] + l[:n]
          return res

          print(rotation([4,5,7,8,9,10])) #=> [8, 9, 10, 4, 5, 7]
          print(rotation([4,5,7,8,9,10,12])) #=> [9, 10, 12, 8, 4, 5, 7]






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 10 at 14:11









          iGian

          2,2832620




          2,2832620







          • 1




            Thanks for your time!
            – Unix
            Nov 10 at 14:22












          • 1




            Thanks for your time!
            – Unix
            Nov 10 at 14:22







          1




          1




          Thanks for your time!
          – Unix
          Nov 10 at 14:22




          Thanks for your time!
          – Unix
          Nov 10 at 14:22

















           

          draft saved


          draft discarded















































           


          draft saved


          draft discarded














          StackExchange.ready(
          function ()
          StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53239301%2fsingle-list-rotation-of-the-first-half-with-the-other-half-including-odd-number%23new-answer', 'question_page');

          );

          Post as a guest














































































          Popular posts from this blog

          27

          Top Tejano songwriter Luis Silva dead of heart attack at 64

          Category:Rhetoric