This question is strongly related to:
Map and Apply a function on a nested list
I am in a bit of a rut in terms of my MMA skills and looking to improve my coding. I've realized that rather than taking advantage of all of capabilities of MMA, I've stuck to a few constructs that are easy coming from a procedural background such as using Table to replicate While-Do functionality.
I often have to deal with nested lists:
n1 = 3; n2 = 6; n3 = 5; (*example*)
list1 = Table[Table[RandomInteger[{-5, 5}, n1], {i, 1, n2, 1}], {j, 1, n3, 1}];
list2 = Table[Table[RandomInteger[{-5, 5}, n1], {i, 1, n2, 1}], {j, 1, n3, 1}];
list3 = Table[Table[RandomInteger[{-5, 5}, n1], {i, 1, n2, 1}], {j, 1, n3, 1}];
list = {list1, list2, list3};
I typically have to apply some set of functions to the nested list as follows:
values1 = Table[Min@list1[[i]][[All, #]] & /@ Range[n1], {i, 1, n3}];
values2 = Table[Max@list2[[i]][[All, #]] & /@ Range[n1], {i, 1, n3}];
values3 = Table[StandardDeviation@list3[[i]][[All, #]] & /@ Range[n1], {i, 1, n3}];
values = {values1, values2, values3};
And plot the results:
Grid[{{ListLinePlot[Transpose@values1, PlotStyle -> {Red}, PlotMarkers -> "x"]
, ListLinePlot[Transpose@values2, PlotStyle -> {Green}, PlotMarkers -> "y"]
, ListLinePlot[Transpose@values3, PlotStyle -> {Blue}, PlotMarkers -> "z"]}}]
Question: How would you rewrite ALL of the above code (including the list generation and plotting) in a functional style (without using Table) so that it is efficient and expandable?

StandardDeviation) forvalues3; is that important? $\endgroup$