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)

Multi tool use
Multi tool use

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







                                pcsK6,adu0Cgon7K3P EfU5I gI2KCvSAM33qG1D8wzcL2k0Q,ZbI
                                rJbLICMjHR,IVzCcKad0s3o,9obokZ25,EUcUJxJWh9FrGYK0PdnP7mA0ZZr34kJRZ7H

                                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

                                Vilaño, A Laracha Índice Patrimonio | Lugares e parroquias | Véxase tamén | Menú de navegación43°14′52″N 8°36′03″O / 43.24775, -8.60070

                                Cegueira Índice Epidemioloxía | Deficiencia visual | Tipos de cegueira | Principais causas de cegueira | Tratamento | Técnicas de adaptación e axudas | Vida dos cegos | Primeiros auxilios | Crenzas respecto das persoas cegas | Crenzas das persoas cegas | O neno deficiente visual | Aspectos psicolóxicos da cegueira | Notas | Véxase tamén | Menú de navegación54.054.154.436928256blindnessDicionario da Real Academia GalegaPortal das Palabras"International Standards: Visual Standards — Aspects and Ranges of Vision Loss with Emphasis on Population Surveys.""Visual impairment and blindness""Presentan un plan para previr a cegueira"o orixinalACCDV Associació Catalana de Cecs i Disminuïts Visuals - PMFTrachoma"Effect of gene therapy on visual function in Leber's congenital amaurosis"1844137110.1056/NEJMoa0802268Cans guía - os mellores amigos dos cegosArquivadoEscola de cans guía para cegos en Mortágua, PortugalArquivado"Tecnología para ciegos y deficientes visuales. Recopilación de recursos gratuitos en la Red""Colorino""‘COL.diesis’, escuchar los sonidos del color""COL.diesis: Transforming Colour into Melody and Implementing the Result in a Colour Sensor Device"o orixinal"Sistema de desarrollo de sinestesia color-sonido para invidentes utilizando un protocolo de audio""Enseñanza táctil - geometría y color. Juegos didácticos para niños ciegos y videntes""Sistema Constanz"L'ocupació laboral dels cecs a l'Estat espanyol està pràcticament equiparada a la de les persones amb visió, entrevista amb Pedro ZuritaONCE (Organización Nacional de Cegos de España)Prevención da cegueiraDescrición de deficiencias visuais (Disc@pnet)Braillín, un boneco atractivo para calquera neno, con ou sen discapacidade, que permite familiarizarse co sistema de escritura e lectura brailleAxudas Técnicas36838ID00897494007150-90057129528256DOID:1432HP:0000618D001766C10.597.751.941.162C97109C0155020