Mathematica 教程 函数 »|教程 »

# 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[{i1->v1,...},n]] a length n list with element ik being vk Apply[List,f[e1,e2,...]] the list {e1, e2, ...}

Some explicit ways to construct lists.

This gives a table of the first five powers of two.
 Out[1]=
Here is another way to get the same result.
 Out[2]=
This gives a similar list.
 Out[3]=
SparseArray lets you specify values at particular positions.
 Out[4]=
You can also use patterns to specify values.
 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.
 Table[expr,{i,list}] the values of expr with i taking on values from list Map[f,list] apply f to each element of list MapIndexed[f,list] give f[elem, {i}] for the ith 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 TakeWhile[list,test] give elements ei from the beginning of list as long as test[ei] is True list[[{i1,i2,...}]] or Part[list,{i1,i2,...}] give a list of the specified parts of list

Constructing lists from other lists.

This selects elements less than 5.
 Out[6]=
This takes elements up to the first element that is not less than 5.
 Out[7]=
This explicitly gives numbered parts.
 Out[8]=
This picks out elements indicated by a 1 in the second list.
 Out[9]=
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.
 Out[10]=
This does the same computation, but accumulating a list of intermediate results above 1000.
 Out[11]=
An alternative but less efficient approach involves introducing a temporary variable, then starting with t={}, and successively using AppendTo[t, elem].