Wolfram ResearchProductsPurchasingServices & ResourcesAbout UsOur Sites
THIS IS DOCUMENTATION FOR AN OBSOLETE PRODUCT.
SEE THE DOCUMENTATION CENTER FOR THE LATEST INFORMATION.
Previous section-----Next section

2.4.1 Constructing Lists

Lists are widely used in Mathematica, and there are many ways to construct them.

Range[n] the list {1, 2, 3, ... , n}
Table[expr, {i, n}] the values of expr with i from 1 to n
Array[f, n] the list {f[1], f[2], ... , f[n]}
NestList[f, x, n] {x, f[x], f[f[x]], ... } with up to n nestings
Normal[SparseArray[{ -> , ... }, n]]
a length n list with element  being
Apply[List, f[ ,  , ... ]] the list { ,  , ... }

Some explicit ways to construct lists.
This gives a table of the first five powers of two.

In[1]:=  Table[2^i, {i, 5}]

Out[1]=

Here is another way to get the same result.

In[2]:=  Array[2^# &, 5]

Out[2]=

This gives a similar list.

In[3]:=  NestList[2 #&, 1, 5]

Out[3]=

SparseArray lets you specify values at particular positions.

In[4]:=  Normal[SparseArray[{3->x, 4->y}, 5]]

Out[4]=

You can also use patterns to specify values.

In[5]:=  Normal[SparseArray[{i_ -> 2^i}, 5]]

Out[5]=

Often you will know in advance how long a list is supposed to be, and how each of its elements should be generated. And often you may get one list from another.

Map[f, list] apply f to each element of list
MapIndexed[f, list] give f[elem, {i}] for the i element
Cases[list, form] give elements of list that match form
Select[list, test] select elements for which test[elem] is True
Pick[list, sel, form] pick out elements of list for which the corresponding elements of sel match form
list[[{ ,  , ... }]] or Part[list, { ,  , ... }]
give a list of the specified parts of list

Constructing lists from other lists.
This selects elements larger than 5.

In[6]:=  Select[{1, 3, 6, 8, 10}, # > 5&]

Out[6]=

This explicitly gives numbered parts.

In[7]:=  {a, b, c, d}[[{2, 1, 4}]]

Out[7]=

This picks out elements indicated by a 1 in the second list.

In[8]:=  Pick[{a, b, c, d}, {1, 0, 1, 1}, 1]

Out[8]=

Sometimes you may want to accumulate a list of results during the execution of a program. You can do this using Sow and Reap.

Sow[val] sow the value val for the nearest enclosing Reap
Reap[expr] evaluate expr, returning also a list of values sown by Sow

Using Sow and Reap.
This program iteratively squares a number.

In[9]:=  Nest[#^2&, 2, 6]

Out[9]=

This does the same computation, but accumulating a list of intermediate results above 1000.

In[10]:=  Reap[Nest[(If[# > 1000, Sow[#]]; #^2) &, 2, 6]]

Out[10]=

An alternative but less efficient approach involves introducing a temporary variable, then starting with t = {}, and successively using AppendTo[t, elem].


Any questions about topics on this page? Click here to get an individual response.Buy NowFree TrialMore Information



 © 2008 Wolfram Research, Inc.  Terms of Use  Privacy Policy |
Sign up for our newsletter: