构建列表

列表在 Mathematica 中被广泛使用,并且对于构建列表,有许多不同的方式.

Range[n]列表
Table[expr,{i,n}]inexpr 的值
Array[f,n]列表
NestList[f,x,n]具有 n 个嵌套的
Normal[SparseArray[{i1->v1,...},n]]长度为 n 的列表,元素
Apply[List,f[e1,e2,...]]列表

用以构建列表的一些明确方式.

这里给出以2为幂的前5个值的列表.
In[1]:=
Click for copyable input
Out[1]=
以下是取得相同结果的另一种方式.
In[2]:=
Click for copyable input
Out[2]=
这里给出相似的列表.
In[3]:=
Click for copyable input
Out[3]=
SparseArray 帮助用户在特定位置指定值.
In[4]:=
Click for copyable input
Out[4]=
也可以使用模式来指定值.
In[5]:=
Click for copyable input
Out[5]=

通常情况下,用户可以提前知道一个列表应该有多长,并且每个元素应该如何生成. 而且,用户可以从一个列表得到另一个列表.

Table[expr,{i,list}]ilist 中取值时, expr 的值
Map[f,list]list 的每个元素应用 f
MapIndexed[f,list]对于第 i 个元素,给出
Cases[list,form]给出与 form 匹配的 list 的元素
Select[list,test]选出 True 的元素
Pick[list,sel,form]选出 list 的元素,sel 相应的元素与 form 匹配
TakeWhile[list,test]只要 True,从 list 的开头给出元素
list[[{i1,i2,...}]]Part[list,{i1,i2,...}]
给出 list 指定部分的列表

从其它列表构建列表.

这里选出小于5的元素.
In[6]:=
Click for copyable input
Out[6]=
这里选出不小于5的第一个元素.
In[7]:=
Click for copyable input
Out[7]=
这里明确给出编号部分.
In[8]:=
Click for copyable input
Out[8]=
这里选出第二个列表中 所对应的元素.
In[9]:=
Click for copyable input
Out[9]=

有时候,用户可能想要在程序执行过程中积累结果列表. 这可以使用 SowReap 实现.

Sow[val]对于最接近的 Reap,进行值 val 的sow操作
Reap[expr]计算 expr,并返回 Sow 产生的值的列表

使用 SowReap.

该程序对一个数进行迭代求平方.
In[10]:=
Click for copyable input
Out[10]=
这里进行同样的计算,但这里把大于1000的中间结果累积成列表.
In[11]:=
Click for copyable input
Out[11]=

另一个效率比较低的方法涉及引入一个临时变量,并以 开始,然后连续使用 AppendTo[t, elem].

New to Mathematica? Find your learning path »
Have a question? Ask support »