Re: Getting rid of those deprecated Do[] loops?
- To: mathgroup at smc.vnet.net
- Subject: [mg92778] Re: [mg92763] Getting rid of those deprecated Do[] loops?
- From: Bob Hanlon <hanlonr at cox.net>
- Date: Mon, 13 Oct 2008 06:17:51 -0400 (EDT)
- Reply-to: hanlonr at cox.net
n = 100; m = 100; data1 = {}; Timing[Do[ Do[data1 = AppendTo[data1, {aa, bb, xx, yy}], {bb, 10, m, 10}], {aa, 1, n}];] {0.03825,Null} Timing[data2 = Table[{aa = kk[[1]]; bb = kk[[2]]; aa, bb, xx, yy}, {kk, Flatten[Outer[{#1, #2} &, Range[n], Range[10, m, 10]], 1]}];] {0.003871,Null} Timing[data3 = Flatten[Outer[{#1, #2, xx, yy} &, Range[n], Range[10, m, 10]], 1];] {0.00092,Null} data1 == data2 == data3 True Bob Hanlon ---- AES <siegman at stanford.edu> wrote: ============= Trying to think of a "two-variable iterator" approach that will let one produce the same results as data = { }; Do[ Do[ data = AppendTo[data, {aa, bb, xx, yy}], {bb, 10, 30, 10}], {aa, 1, 2}]; Print[data // TableForm]; without using those universally deprecated (and even worse, nested) Do[ ] loops, not to mention the equally deprecated AppendTo[]. Somewhat to my surprise, the construction Table[{aa = kk[[1]]; bb = kk[[2]]; aa, bb, xx, yy}, {kk, {{1, 10}, {1, 20}, {1, 30}, {2, 10}, {2, 20}, {2,30}}} ] // TableForm using a two-dimensional iterator iterator variable kk, actually does this, though the "iterator list" is obviously a bit messy. Simpler way of defining an iterator to do this? In more than two iterator dimensions (aa, bb, cc,...)? (with no functional dependence between the values of aa, bb, cc). Is the concept of a multi-dimensional iterator variable kk mentioned in the M6 documentation anywhere? (A search on "Iterate" or "iteration" brings up 193 hits at 10 per screen.) -- Bob Hanlon