How to reverse every other sublist of a list?












5












$begingroup$


I have a list with sublists list = {{1, 2}, {3, 4}, {5, 6}, {7, 8}}. I would like to reverse every other sublist, starting from the second one. The result would look like result = {{1, 2}, {4, 3}, {5, 6}, {8, 7}}. What would be a simple way to do this?










share|improve this question









$endgroup$

















    5












    $begingroup$


    I have a list with sublists list = {{1, 2}, {3, 4}, {5, 6}, {7, 8}}. I would like to reverse every other sublist, starting from the second one. The result would look like result = {{1, 2}, {4, 3}, {5, 6}, {8, 7}}. What would be a simple way to do this?










    share|improve this question









    $endgroup$















      5












      5








      5


      2



      $begingroup$


      I have a list with sublists list = {{1, 2}, {3, 4}, {5, 6}, {7, 8}}. I would like to reverse every other sublist, starting from the second one. The result would look like result = {{1, 2}, {4, 3}, {5, 6}, {8, 7}}. What would be a simple way to do this?










      share|improve this question









      $endgroup$




      I have a list with sublists list = {{1, 2}, {3, 4}, {5, 6}, {7, 8}}. I would like to reverse every other sublist, starting from the second one. The result would look like result = {{1, 2}, {4, 3}, {5, 6}, {8, 7}}. What would be a simple way to do this?







      list-manipulation






      share|improve this question













      share|improve this question











      share|improve this question




      share|improve this question










      asked 2 days ago









      nanjunnanjun

      44429




      44429






















          4 Answers
          4






          active

          oldest

          votes


















          13












          $begingroup$

          Use MapAt, which accepts the same syntax as Part:



          MapAt[Reverse, list, {2 ;; ;; 2}]
          (* {{1, 2}, {4, 3}, {5, 6}, {8, 7}} *)





          share|improve this answer









          $endgroup$





















            9












            $begingroup$

            Using Part and Span might not seem overly elegant but it is fast:



            list = RandomReal[{-1, 1}, {100000, 10}];

            a = MapAt[Reverse, list, {2 ;; ;; 2}]; // RepeatedTiming // First

            b = ReplacePart[list, i_?EvenQ :> Reverse@list[[i]]]; // RepeatedTiming // First

            c = Module[{result = list},
            result[[2 ;; ;; 2]] = list[[2 ;; ;; 2, -1 ;; 1 ;; -1]];
            result
            ]; // RepeatedTiming // First

            a == b == c



            0.11



            0.317



            0.0036



            True







            share|improve this answer











            $endgroup$









            • 2




              $begingroup$
              A bit cleaner, s/b comparable in speed: Riffle[list[[;; ;; 2]], list[[2 ;; ;; 2, -1 ;; 1 ;; -1]]]
              $endgroup$
              – ciao
              yesterday



















            4












            $begingroup$

            Another method is to use ReplacePart:



            ReplacePart[{{1, 2}, {3, 4}, {5, 6}, {7, 8}},
            i_ ? EvenQ :> Reverse@list[[i]]
            ]
            (* {{1,2},{4,3},{5,6},{8,7}} *)





            share|improve this answer









            $endgroup$





















              3












              $begingroup$

              This will work



              list = {{1, 2}, {3, 4}, {5, 6}, {7, 8}};

              Table[If[EvenQ[i], Reverse[list[[i]]], list[[i]]], {i, 1, Length[list]}]

              (*{{1, 2}, {4, 3}, {5, 6}, {8, 7}}*)
              ```





              share|improve this answer








              New contributor




              cphys is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
              Check out our Code of Conduct.






              $endgroup$














                Your Answer





                StackExchange.ifUsing("editor", function () {
                return StackExchange.using("mathjaxEditing", function () {
                StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
                StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["$", "$"], ["\\(","\\)"]]);
                });
                });
                }, "mathjax-editing");

                StackExchange.ready(function() {
                var channelOptions = {
                tags: "".split(" "),
                id: "387"
                };
                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',
                autoActivateHeartbeat: false,
                convertImagesToLinks: false,
                noModals: true,
                showLowRepImageUploadWarning: true,
                reputationToPostImages: null,
                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%2fmathematica.stackexchange.com%2fquestions%2f194901%2fhow-to-reverse-every-other-sublist-of-a-list%23new-answer', 'question_page');
                }
                );

                Post as a guest















                Required, but never shown

























                4 Answers
                4






                active

                oldest

                votes








                4 Answers
                4






                active

                oldest

                votes









                active

                oldest

                votes






                active

                oldest

                votes









                13












                $begingroup$

                Use MapAt, which accepts the same syntax as Part:



                MapAt[Reverse, list, {2 ;; ;; 2}]
                (* {{1, 2}, {4, 3}, {5, 6}, {8, 7}} *)





                share|improve this answer









                $endgroup$


















                  13












                  $begingroup$

                  Use MapAt, which accepts the same syntax as Part:



                  MapAt[Reverse, list, {2 ;; ;; 2}]
                  (* {{1, 2}, {4, 3}, {5, 6}, {8, 7}} *)





                  share|improve this answer









                  $endgroup$
















                    13












                    13








                    13





                    $begingroup$

                    Use MapAt, which accepts the same syntax as Part:



                    MapAt[Reverse, list, {2 ;; ;; 2}]
                    (* {{1, 2}, {4, 3}, {5, 6}, {8, 7}} *)





                    share|improve this answer









                    $endgroup$



                    Use MapAt, which accepts the same syntax as Part:



                    MapAt[Reverse, list, {2 ;; ;; 2}]
                    (* {{1, 2}, {4, 3}, {5, 6}, {8, 7}} *)






                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered 2 days ago









                    marchmarch

                    17.6k22770




                    17.6k22770























                        9












                        $begingroup$

                        Using Part and Span might not seem overly elegant but it is fast:



                        list = RandomReal[{-1, 1}, {100000, 10}];

                        a = MapAt[Reverse, list, {2 ;; ;; 2}]; // RepeatedTiming // First

                        b = ReplacePart[list, i_?EvenQ :> Reverse@list[[i]]]; // RepeatedTiming // First

                        c = Module[{result = list},
                        result[[2 ;; ;; 2]] = list[[2 ;; ;; 2, -1 ;; 1 ;; -1]];
                        result
                        ]; // RepeatedTiming // First

                        a == b == c



                        0.11



                        0.317



                        0.0036



                        True







                        share|improve this answer











                        $endgroup$









                        • 2




                          $begingroup$
                          A bit cleaner, s/b comparable in speed: Riffle[list[[;; ;; 2]], list[[2 ;; ;; 2, -1 ;; 1 ;; -1]]]
                          $endgroup$
                          – ciao
                          yesterday
















                        9












                        $begingroup$

                        Using Part and Span might not seem overly elegant but it is fast:



                        list = RandomReal[{-1, 1}, {100000, 10}];

                        a = MapAt[Reverse, list, {2 ;; ;; 2}]; // RepeatedTiming // First

                        b = ReplacePart[list, i_?EvenQ :> Reverse@list[[i]]]; // RepeatedTiming // First

                        c = Module[{result = list},
                        result[[2 ;; ;; 2]] = list[[2 ;; ;; 2, -1 ;; 1 ;; -1]];
                        result
                        ]; // RepeatedTiming // First

                        a == b == c



                        0.11



                        0.317



                        0.0036



                        True







                        share|improve this answer











                        $endgroup$









                        • 2




                          $begingroup$
                          A bit cleaner, s/b comparable in speed: Riffle[list[[;; ;; 2]], list[[2 ;; ;; 2, -1 ;; 1 ;; -1]]]
                          $endgroup$
                          – ciao
                          yesterday














                        9












                        9








                        9





                        $begingroup$

                        Using Part and Span might not seem overly elegant but it is fast:



                        list = RandomReal[{-1, 1}, {100000, 10}];

                        a = MapAt[Reverse, list, {2 ;; ;; 2}]; // RepeatedTiming // First

                        b = ReplacePart[list, i_?EvenQ :> Reverse@list[[i]]]; // RepeatedTiming // First

                        c = Module[{result = list},
                        result[[2 ;; ;; 2]] = list[[2 ;; ;; 2, -1 ;; 1 ;; -1]];
                        result
                        ]; // RepeatedTiming // First

                        a == b == c



                        0.11



                        0.317



                        0.0036



                        True







                        share|improve this answer











                        $endgroup$



                        Using Part and Span might not seem overly elegant but it is fast:



                        list = RandomReal[{-1, 1}, {100000, 10}];

                        a = MapAt[Reverse, list, {2 ;; ;; 2}]; // RepeatedTiming // First

                        b = ReplacePart[list, i_?EvenQ :> Reverse@list[[i]]]; // RepeatedTiming // First

                        c = Module[{result = list},
                        result[[2 ;; ;; 2]] = list[[2 ;; ;; 2, -1 ;; 1 ;; -1]];
                        result
                        ]; // RepeatedTiming // First

                        a == b == c



                        0.11



                        0.317



                        0.0036



                        True








                        share|improve this answer














                        share|improve this answer



                        share|improve this answer








                        edited yesterday

























                        answered 2 days ago









                        Henrik SchumacherHenrik Schumacher

                        59.9k582167




                        59.9k582167








                        • 2




                          $begingroup$
                          A bit cleaner, s/b comparable in speed: Riffle[list[[;; ;; 2]], list[[2 ;; ;; 2, -1 ;; 1 ;; -1]]]
                          $endgroup$
                          – ciao
                          yesterday














                        • 2




                          $begingroup$
                          A bit cleaner, s/b comparable in speed: Riffle[list[[;; ;; 2]], list[[2 ;; ;; 2, -1 ;; 1 ;; -1]]]
                          $endgroup$
                          – ciao
                          yesterday








                        2




                        2




                        $begingroup$
                        A bit cleaner, s/b comparable in speed: Riffle[list[[;; ;; 2]], list[[2 ;; ;; 2, -1 ;; 1 ;; -1]]]
                        $endgroup$
                        – ciao
                        yesterday




                        $begingroup$
                        A bit cleaner, s/b comparable in speed: Riffle[list[[;; ;; 2]], list[[2 ;; ;; 2, -1 ;; 1 ;; -1]]]
                        $endgroup$
                        – ciao
                        yesterday











                        4












                        $begingroup$

                        Another method is to use ReplacePart:



                        ReplacePart[{{1, 2}, {3, 4}, {5, 6}, {7, 8}},
                        i_ ? EvenQ :> Reverse@list[[i]]
                        ]
                        (* {{1,2},{4,3},{5,6},{8,7}} *)





                        share|improve this answer









                        $endgroup$


















                          4












                          $begingroup$

                          Another method is to use ReplacePart:



                          ReplacePart[{{1, 2}, {3, 4}, {5, 6}, {7, 8}},
                          i_ ? EvenQ :> Reverse@list[[i]]
                          ]
                          (* {{1,2},{4,3},{5,6},{8,7}} *)





                          share|improve this answer









                          $endgroup$
















                            4












                            4








                            4





                            $begingroup$

                            Another method is to use ReplacePart:



                            ReplacePart[{{1, 2}, {3, 4}, {5, 6}, {7, 8}},
                            i_ ? EvenQ :> Reverse@list[[i]]
                            ]
                            (* {{1,2},{4,3},{5,6},{8,7}} *)





                            share|improve this answer









                            $endgroup$



                            Another method is to use ReplacePart:



                            ReplacePart[{{1, 2}, {3, 4}, {5, 6}, {7, 8}},
                            i_ ? EvenQ :> Reverse@list[[i]]
                            ]
                            (* {{1,2},{4,3},{5,6},{8,7}} *)






                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered 2 days ago









                            Jason B.Jason B.

                            48.9k389197




                            48.9k389197























                                3












                                $begingroup$

                                This will work



                                list = {{1, 2}, {3, 4}, {5, 6}, {7, 8}};

                                Table[If[EvenQ[i], Reverse[list[[i]]], list[[i]]], {i, 1, Length[list]}]

                                (*{{1, 2}, {4, 3}, {5, 6}, {8, 7}}*)
                                ```





                                share|improve this answer








                                New contributor




                                cphys is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                Check out our Code of Conduct.






                                $endgroup$


















                                  3












                                  $begingroup$

                                  This will work



                                  list = {{1, 2}, {3, 4}, {5, 6}, {7, 8}};

                                  Table[If[EvenQ[i], Reverse[list[[i]]], list[[i]]], {i, 1, Length[list]}]

                                  (*{{1, 2}, {4, 3}, {5, 6}, {8, 7}}*)
                                  ```





                                  share|improve this answer








                                  New contributor




                                  cphys is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                  Check out our Code of Conduct.






                                  $endgroup$
















                                    3












                                    3








                                    3





                                    $begingroup$

                                    This will work



                                    list = {{1, 2}, {3, 4}, {5, 6}, {7, 8}};

                                    Table[If[EvenQ[i], Reverse[list[[i]]], list[[i]]], {i, 1, Length[list]}]

                                    (*{{1, 2}, {4, 3}, {5, 6}, {8, 7}}*)
                                    ```





                                    share|improve this answer








                                    New contributor




                                    cphys is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                    Check out our Code of Conduct.






                                    $endgroup$



                                    This will work



                                    list = {{1, 2}, {3, 4}, {5, 6}, {7, 8}};

                                    Table[If[EvenQ[i], Reverse[list[[i]]], list[[i]]], {i, 1, Length[list]}]

                                    (*{{1, 2}, {4, 3}, {5, 6}, {8, 7}}*)
                                    ```






                                    share|improve this answer








                                    New contributor




                                    cphys is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                    Check out our Code of Conduct.









                                    share|improve this answer



                                    share|improve this answer






                                    New contributor




                                    cphys is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                    Check out our Code of Conduct.









                                    answered 2 days ago









                                    cphyscphys

                                    815




                                    815




                                    New contributor




                                    cphys is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                    Check out our Code of Conduct.





                                    New contributor





                                    cphys is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                    Check out our Code of Conduct.






                                    cphys is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
                                    Check out our Code of Conduct.






























                                        draft saved

                                        draft discarded




















































                                        Thanks for contributing an answer to Mathematica Stack Exchange!


                                        • Please be sure to answer the question. Provide details and share your research!

                                        But avoid



                                        • Asking for help, clarification, or responding to other answers.

                                        • Making statements based on opinion; back them up with references or personal experience.


                                        Use MathJax to format equations. MathJax reference.


                                        To learn more, see our tips on writing great answers.




                                        draft saved


                                        draft discarded














                                        StackExchange.ready(
                                        function () {
                                        StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fmathematica.stackexchange.com%2fquestions%2f194901%2fhow-to-reverse-every-other-sublist-of-a-list%23new-answer', 'question_page');
                                        }
                                        );

                                        Post as a guest















                                        Required, but never shown





















































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown

































                                        Required, but never shown














                                        Required, but never shown












                                        Required, but never shown







                                        Required, but never shown







                                        Popular posts from this blog

                                        GameSpot

                                        日野市

                                        Tu-95轟炸機