Special Forms of Assignment

Particularly when you write procedural programs in the Wolfram Language, you will often need to modify the value of a particular variable repeatedly. You can always do this by constructing the new value and explicitly performing an assignment such as x=value. The Wolfram Language, however, provides special notations for incrementing the values of variables, and for some other common cases.

Modifying values of variables.

This assigns the value 7x to the variable t:

t=7x

This increments the value of t by 18x:

t+=18x

The value of t has been modified:

t

This sets t to 8, multiplies its value by 7, then gives the final value of t:

t=8;t*=7;t

The value of i++ is the value of i before the increment is done:

i=5;Print[i++];Print[i]

The value of ++i is the value of i after the increment:

i=5;Print[++i];Print[i]

Assigning values to several variables at a time.

This assigns the value 5 to x and 8 to y:

{x,y}={5,8}

This interchanges the values of x and y:

{x,y}={y,x}

Now x has value 8:

x

And y has value 5:

y

You can use assignments to lists to permute values of variables in any way:

{a,b,c}={1,2,3};{b,a,c}={a,c,b};{a,b,c}

When you write programs in the Wolfram Language, you will sometimes find it convenient to take a list, and successively add elements to it. You can do this using the functions (RefLink[PrependTo, paclet:ref/PrependTo]) and (RefLink[AppendTo, paclet:ref/AppendTo]).

Assignments for modifying lists.

This assigns the value of v to be the list {5,7,9}:

v={5,7,9}

This appends the element 11 to the value of v:

AppendTo[v,11]

Now the value of v has been modified:

v

Although (RefLink[AppendTo, paclet:ref/AppendTo])[v,elem] is always equivalent to v=(RefLink[Append, paclet:ref/Append])[v,elem], it is often a convenient notation. However, you should realize that because of the way the Wolfram System stores lists, it is usually less efficient to add a sequence of elements to a particular list than to create a nested structure that consists, for example, of lists of length 2 at each level. When you have built up such a structure, you can always reduce it to a single list using (RefLink[Flatten, paclet:ref/Flatten]).

This sets up a nested list structure for w:

w={1};Do[w={w,k^2},{k,1,4}];w

You can use (RefLink[Flatten, paclet:ref/Flatten]) to unravel the structure:

Flatten[w]