Applying a function to a nested listNested List ProductExtract function argumentsCreating a simple function to compute the average of the difference between pairs of elements in an arraySorting non-numerical listsExtract part of list by reading it in a cyclic mannerApplying a function along the desired dimensions of a n-dimensional arrayManipulating Elements in a Triple-Nested ListApplying function to all elements of the list of listApplying a function to a list of symbolic ratiosApplying a function to a list (compounding)

How to handle DM constantly stealing everything from sleeping characters?

if i accidentally leaked my schools ip address and someone d doses my school am i at fault

how to find out if there's files in a folder and exit accordingly (in KSH)

Why is there a cap on 401k contributions?

Do Rabbis admit emotional involvement in their rulings?

resoldering copper waste pipe

How can I test a shell script in a "safe environment" to avoid harm to my computer?

Not taking the bishop by the knight, why?

Probability of taking balls without replacement from a bag question

Passport stamps art, can it be done?

How is Arya still alive?

Was there a contingency plan in place if Little Boy failed to detonate?

Is there a need for better software for writers?

How can I make parentheses stick to formula?

How do I minimise waste on a flight?

Was Mohammed the most popular first name for boys born in Berlin in 2018?

What does the "DS" in "DS-..." US visa application forms stand for?

Employee is self-centered and affects the team negatively

Unicode-math and mathrm result in missing symbols

Is there any evidence to support the claim that the United States was "suckered into WW1" by Zionists, made by Benjamin Freedman in his 1961 speech

What replaces x86 intrinsics for C when Apple ditches Intel CPUs for their own chips?

What can cause an unfrozen indoor copper drain pipe to crack?

Can I bring back Planetary Romance as a genre?

Gift for mentor after his thesis defense?



Applying a function to a nested list


Nested List ProductExtract function argumentsCreating a simple function to compute the average of the difference between pairs of elements in an arraySorting non-numerical listsExtract part of list by reading it in a cyclic mannerApplying a function along the desired dimensions of a n-dimensional arrayManipulating Elements in a Triple-Nested ListApplying function to all elements of the list of listApplying a function to a list of symbolic ratiosApplying a function to a list (compounding)













4












$begingroup$


Say I have a list:



l = a, b, c, d 


I now want to apply a function, call it F to that list in a way that I go from the lowest to highest level, i.e.



F[F[F[a,b], c] , d]


Is there a function in Mathematica which does exactly that?










share|improve this question











$endgroup$







  • 4




    $begingroup$
    Why does the order for d and c change, and not for a and b?
    $endgroup$
    – Carl Woll
    Apr 29 at 22:30










  • $begingroup$
    My mistake, thank you for spotting that. I edited it.
    $endgroup$
    – amator2357
    Apr 29 at 22:54










  • $begingroup$
    In your example it does not matter whether F is applied from the lowest level up or reverse. It it matters it may affect applicable solutions.
    $endgroup$
    – Kuba
    Apr 30 at 6:27















4












$begingroup$


Say I have a list:



l = a, b, c, d 


I now want to apply a function, call it F to that list in a way that I go from the lowest to highest level, i.e.



F[F[F[a,b], c] , d]


Is there a function in Mathematica which does exactly that?










share|improve this question











$endgroup$







  • 4




    $begingroup$
    Why does the order for d and c change, and not for a and b?
    $endgroup$
    – Carl Woll
    Apr 29 at 22:30










  • $begingroup$
    My mistake, thank you for spotting that. I edited it.
    $endgroup$
    – amator2357
    Apr 29 at 22:54










  • $begingroup$
    In your example it does not matter whether F is applied from the lowest level up or reverse. It it matters it may affect applicable solutions.
    $endgroup$
    – Kuba
    Apr 30 at 6:27













4












4








4





$begingroup$


Say I have a list:



l = a, b, c, d 


I now want to apply a function, call it F to that list in a way that I go from the lowest to highest level, i.e.



F[F[F[a,b], c] , d]


Is there a function in Mathematica which does exactly that?










share|improve this question











$endgroup$




Say I have a list:



l = a, b, c, d 


I now want to apply a function, call it F to that list in a way that I go from the lowest to highest level, i.e.



F[F[F[a,b], c] , d]


Is there a function in Mathematica which does exactly that?







list-manipulation functions






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited Apr 29 at 22:53







amator2357

















asked Apr 29 at 21:53









amator2357amator2357

61610




61610







  • 4




    $begingroup$
    Why does the order for d and c change, and not for a and b?
    $endgroup$
    – Carl Woll
    Apr 29 at 22:30










  • $begingroup$
    My mistake, thank you for spotting that. I edited it.
    $endgroup$
    – amator2357
    Apr 29 at 22:54










  • $begingroup$
    In your example it does not matter whether F is applied from the lowest level up or reverse. It it matters it may affect applicable solutions.
    $endgroup$
    – Kuba
    Apr 30 at 6:27












  • 4




    $begingroup$
    Why does the order for d and c change, and not for a and b?
    $endgroup$
    – Carl Woll
    Apr 29 at 22:30










  • $begingroup$
    My mistake, thank you for spotting that. I edited it.
    $endgroup$
    – amator2357
    Apr 29 at 22:54










  • $begingroup$
    In your example it does not matter whether F is applied from the lowest level up or reverse. It it matters it may affect applicable solutions.
    $endgroup$
    – Kuba
    Apr 30 at 6:27







4




4




$begingroup$
Why does the order for d and c change, and not for a and b?
$endgroup$
– Carl Woll
Apr 29 at 22:30




$begingroup$
Why does the order for d and c change, and not for a and b?
$endgroup$
– Carl Woll
Apr 29 at 22:30












$begingroup$
My mistake, thank you for spotting that. I edited it.
$endgroup$
– amator2357
Apr 29 at 22:54




$begingroup$
My mistake, thank you for spotting that. I edited it.
$endgroup$
– amator2357
Apr 29 at 22:54












$begingroup$
In your example it does not matter whether F is applied from the lowest level up or reverse. It it matters it may affect applicable solutions.
$endgroup$
– Kuba
Apr 30 at 6:27




$begingroup$
In your example it does not matter whether F is applied from the lowest level up or reverse. It it matters it may affect applicable solutions.
$endgroup$
– Kuba
Apr 30 at 6:27










4 Answers
4






active

oldest

votes


















7












$begingroup$

Replace[l, x_List :> F[x], All]



F[F[F[a, b], c], d]




Also



ClearAll[f]
f[Except[_List, x_]] := x;
MapAll[f, l]



f[f[f[a, b], c], d]







share|improve this answer









$endgroup$




















    6












    $begingroup$

    Another possibility, if you want just lists to acquire the F wrapper:



    l /. List -> F@*List



    F[F[F[a, b], c], d]







    share|improve this answer









    $endgroup$




















      4












      $begingroup$

      F@*Reverse@Map[F@*Reverse, l, -2]



      F[d, F[c, F[b, a]]]




      Fold[F[#2, #1] &, Flatten[l]]



      F[d, F[c, F[b, a]]]







      share|improve this answer









      $endgroup$












      • $begingroup$
        I think that Flatten works in this trivial case but it will not "find" the levels in a more complex situation
        $endgroup$
        – J42161217
        Apr 29 at 22:41


















      1












      $begingroup$

      This works:



      a, b, c, d //. s_?ListQ, t_?(Not@*ListQ) :> f[s], t // f


      It's a bit hackish because of the separate invocation of f at the end, but it returns the desired result.






      share|improve this answer









      $endgroup$













        Your Answer








        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%2f197329%2fapplying-a-function-to-a-nested-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









        7












        $begingroup$

        Replace[l, x_List :> F[x], All]



        F[F[F[a, b], c], d]




        Also



        ClearAll[f]
        f[Except[_List, x_]] := x;
        MapAll[f, l]



        f[f[f[a, b], c], d]







        share|improve this answer









        $endgroup$

















          7












          $begingroup$

          Replace[l, x_List :> F[x], All]



          F[F[F[a, b], c], d]




          Also



          ClearAll[f]
          f[Except[_List, x_]] := x;
          MapAll[f, l]



          f[f[f[a, b], c], d]







          share|improve this answer









          $endgroup$















            7












            7








            7





            $begingroup$

            Replace[l, x_List :> F[x], All]



            F[F[F[a, b], c], d]




            Also



            ClearAll[f]
            f[Except[_List, x_]] := x;
            MapAll[f, l]



            f[f[f[a, b], c], d]







            share|improve this answer









            $endgroup$



            Replace[l, x_List :> F[x], All]



            F[F[F[a, b], c], d]




            Also



            ClearAll[f]
            f[Except[_List, x_]] := x;
            MapAll[f, l]



            f[f[f[a, b], c], d]








            share|improve this answer












            share|improve this answer



            share|improve this answer










            answered Apr 29 at 23:34









            kglrkglr

            191k10212431




            191k10212431





















                6












                $begingroup$

                Another possibility, if you want just lists to acquire the F wrapper:



                l /. List -> F@*List



                F[F[F[a, b], c], d]







                share|improve this answer









                $endgroup$

















                  6












                  $begingroup$

                  Another possibility, if you want just lists to acquire the F wrapper:



                  l /. List -> F@*List



                  F[F[F[a, b], c], d]







                  share|improve this answer









                  $endgroup$















                    6












                    6








                    6





                    $begingroup$

                    Another possibility, if you want just lists to acquire the F wrapper:



                    l /. List -> F@*List



                    F[F[F[a, b], c], d]







                    share|improve this answer









                    $endgroup$



                    Another possibility, if you want just lists to acquire the F wrapper:



                    l /. List -> F@*List



                    F[F[F[a, b], c], d]








                    share|improve this answer












                    share|improve this answer



                    share|improve this answer










                    answered Apr 30 at 0:10









                    Carl WollCarl Woll

                    77.7k3102204




                    77.7k3102204





















                        4












                        $begingroup$

                        F@*Reverse@Map[F@*Reverse, l, -2]



                        F[d, F[c, F[b, a]]]




                        Fold[F[#2, #1] &, Flatten[l]]



                        F[d, F[c, F[b, a]]]







                        share|improve this answer









                        $endgroup$












                        • $begingroup$
                          I think that Flatten works in this trivial case but it will not "find" the levels in a more complex situation
                          $endgroup$
                          – J42161217
                          Apr 29 at 22:41















                        4












                        $begingroup$

                        F@*Reverse@Map[F@*Reverse, l, -2]



                        F[d, F[c, F[b, a]]]




                        Fold[F[#2, #1] &, Flatten[l]]



                        F[d, F[c, F[b, a]]]







                        share|improve this answer









                        $endgroup$












                        • $begingroup$
                          I think that Flatten works in this trivial case but it will not "find" the levels in a more complex situation
                          $endgroup$
                          – J42161217
                          Apr 29 at 22:41













                        4












                        4








                        4





                        $begingroup$

                        F@*Reverse@Map[F@*Reverse, l, -2]



                        F[d, F[c, F[b, a]]]




                        Fold[F[#2, #1] &, Flatten[l]]



                        F[d, F[c, F[b, a]]]







                        share|improve this answer









                        $endgroup$



                        F@*Reverse@Map[F@*Reverse, l, -2]



                        F[d, F[c, F[b, a]]]




                        Fold[F[#2, #1] &, Flatten[l]]



                        F[d, F[c, F[b, a]]]








                        share|improve this answer












                        share|improve this answer



                        share|improve this answer










                        answered Apr 29 at 22:30









                        Henrik SchumacherHenrik Schumacher

                        61.8k585172




                        61.8k585172











                        • $begingroup$
                          I think that Flatten works in this trivial case but it will not "find" the levels in a more complex situation
                          $endgroup$
                          – J42161217
                          Apr 29 at 22:41
















                        • $begingroup$
                          I think that Flatten works in this trivial case but it will not "find" the levels in a more complex situation
                          $endgroup$
                          – J42161217
                          Apr 29 at 22:41















                        $begingroup$
                        I think that Flatten works in this trivial case but it will not "find" the levels in a more complex situation
                        $endgroup$
                        – J42161217
                        Apr 29 at 22:41




                        $begingroup$
                        I think that Flatten works in this trivial case but it will not "find" the levels in a more complex situation
                        $endgroup$
                        – J42161217
                        Apr 29 at 22:41











                        1












                        $begingroup$

                        This works:



                        a, b, c, d //. s_?ListQ, t_?(Not@*ListQ) :> f[s], t // f


                        It's a bit hackish because of the separate invocation of f at the end, but it returns the desired result.






                        share|improve this answer









                        $endgroup$

















                          1












                          $begingroup$

                          This works:



                          a, b, c, d //. s_?ListQ, t_?(Not@*ListQ) :> f[s], t // f


                          It's a bit hackish because of the separate invocation of f at the end, but it returns the desired result.






                          share|improve this answer









                          $endgroup$















                            1












                            1








                            1





                            $begingroup$

                            This works:



                            a, b, c, d //. s_?ListQ, t_?(Not@*ListQ) :> f[s], t // f


                            It's a bit hackish because of the separate invocation of f at the end, but it returns the desired result.






                            share|improve this answer









                            $endgroup$



                            This works:



                            a, b, c, d //. s_?ListQ, t_?(Not@*ListQ) :> f[s], t // f


                            It's a bit hackish because of the separate invocation of f at the end, but it returns the desired result.







                            share|improve this answer












                            share|improve this answer



                            share|improve this answer










                            answered Apr 29 at 23:03









                            ShredderroyShredderroy

                            1,6201117




                            1,6201117



























                                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%2f197329%2fapplying-a-function-to-a-nested-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

                                Wikipedia:Vital articles Мазмуну Biography - Өмүр баян Philosophy and psychology - Философия жана психология Religion - Дин Social sciences - Коомдук илимдер Language and literature - Тил жана адабият Science - Илим Technology - Технология Arts and recreation - Искусство жана эс алуу History and geography - Тарых жана география Навигация менюсу

                                Bruxelas-Capital Índice Historia | Composición | Situación lingüística | Clima | Cidades irmandadas | Notas | Véxase tamén | Menú de navegacióneO uso das linguas en Bruxelas e a situación do neerlandés"Rexión de Bruxelas Capital"o orixinalSitio da rexiónPáxina de Bruselas no sitio da Oficina de Promoción Turística de Valonia e BruxelasMapa Interactivo da Rexión de Bruxelas-CapitaleeWorldCat332144929079854441105155190212ID28008674080552-90000 0001 0666 3698n94104302ID540940339365017018237

                                What should I write in an apology letter, since I have decided not to join a company after accepting an offer letterShould I keep looking after accepting a job offer?What should I do when I've been verbally told I would get an offer letter, but still haven't gotten one after 4 weeks?Do I accept an offer from a company that I am not likely to join?New job hasn't confirmed starting date and I want to give current employer as much notice as possibleHow should I address my manager in my resignation letter?HR delayed background verification, now jobless as resignedNo email communication after accepting a formal written offer. How should I phrase the call?What should I do if after receiving a verbal offer letter I am informed that my written job offer is put on hold due to some internal issues?Should I inform the current employer that I am about to resign within 1-2 weeks since I have signed the offer letter and waiting for visa?What company will do, if I send their offer letter to another company