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

                                RemoteApp sporadic failureWindows 2008 RemoteAPP client disconnects within a matter of minutesWhat is the minimum version of RDP supported by Server 2012 RDS?How to configure a Remoteapp server to increase stabilityMicrosoft RemoteApp Active SessionRDWeb TS connection broken for some users post RemoteApp certificate changeRemote Desktop Licensing, RemoteAPPRDS 2012 R2 some users are not able to logon after changed date and time on Connection BrokersWhat happens during Remote Desktop logon, and is there any logging?After installing RDS on WinServer 2016 I still can only connect with two users?RD Connection via RDGW to Session host is not connecting

                                How to write a 12-bar blues melodyI-IV-V blues progressionHow to play the bridges in a standard blues progressionHow does Gdim7 fit in C# minor?question on a certain chord progressionMusicology of Melody12 bar blues, spread rhythm: alternative to 6th chord to avoid finger stretchChord progressions/ Root key/ MelodiesHow to put chords (POP-EDM) under a given lead vocal melody (starting from a good knowledge in music theory)Are there “rules” for improvising with the minor pentatonic scale over 12-bar shuffle?Confusion about blues scale and chords

                                Esgonzo ibérico Índice Descrición Distribución Hábitat Ameazas Notas Véxase tamén "Acerca dos nomes dos anfibios e réptiles galegos""Chalcides bedriagai"Chalcides bedriagai en Carrascal, L. M. Salvador, A. (Eds). Enciclopedia virtual de los vertebrados españoles. Museo Nacional de Ciencias Naturales, Madrid. España.Fotos