How to use Row[Table[{B[i],0,i},{i,0,2}],","] directly in Do command? I mean that the following command

Row[Table[{B[i],0,i},{i,0,2}],","]

gives

{B[0], 0, 0},{B[1], 0, 1},{B[2],0,2}

But, the following command returns the error

"Do::nliter: Non-list iterator Row[Table[{B[i], 0, i}, {i, 0, 2}], ,] at position 2 does not evaluate to a real numeric value."

Do[Print[B[0]+B[1]+B[2]],Row[Table[{B[i],0,i},{i,0,2}],","]]

Of course, one can type instead by hand the following:

Do[Print[B[0]+B[1]+B[2]],{B[0],0,0},{B[1],0,1},{B[2],0,2}] 

But, I feel that typing an output by hand again is not really an optimal method.

New contributor
veo is a new contributor to this site. Take care in asking for clarification, commenting, and answering. Check out our Code of Conduct.
up vote 13 down vote accepted

What you actually want is to create a Sequence from the Table to be used as your iterators.

You can do this with

Do[Print[B[0] + B[1] + B[2]], Sequence @@ Table[{B[i], 0, i}, {i, 0, 2}] // 
Evaluate]

(*0
  1
  2
  1
  2
  3*)

Or, so you don't have to force evaluation,

Do[Print[B[0] + B[1] + B[2]], ##] & @@ Table[{B[i], 0, i}, {i, 0, 2}]

Perhaps you can avoid Do and instead use Tuples:

Tuples @ Range[0, {0, 1, 2}]

{{0, 0, 0}, {0, 0, 1}, {0, 0, 2}, {0, 1, 0}, {0, 1, 1}, {0, 1, 2}}

You can then use Total to sum each tuple:

Total[
    Tuples @ Range[0, {0, 1, 2}],
    {2}
]

{0, 1, 2, 1, 2, 3}

Do[Print[B[0] + B[1] + B[2]], 
 Evaluate[Sequence @@ First@ Row[Table[{B[i], 0, i}, {i, 0, 2}], ","]]]

or

row = Row[Table[{B[i], 0, i}, {i, 0, 2}], ","];
Do[Print[B[0] + B[1] + B[2]], Evaluate[Sequence @@ row[[1]]]]

Your Answer

veo is a new contributor. Be nice, and check out our Code of Conduct.
 
discard

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.