通过索引操作列表

Part[list,spec]list[[spec]]列表的一个或多个部分
Part[list,spec1,spec2,]list[[spec1,spec2,]]嵌套列表的一个或多个部分
n开头的第 n 个部分
-n末尾的第 n 个部分
{i1,i2,}由部分组成的列表
m;;nm 部分到第 n 部分
All所有部分

获取列表的部分.

这里给出列表的第一部分和第三部分.
In[1]:=
Click for copyable input
Out[1]=
以下是一个嵌套列表.
In[2]:=
Click for copyable input
这里给出第一部分和第三部分的列表.
In[3]:=
Click for copyable input
Out[3]=
这里给出每个部分第一子部的列表.
In[4]:=
Click for copyable input
Out[4]=
这里给出前两个部分的列表.
In[5]:=
Click for copyable input
Out[5]=
这里给出 的前两个部分.
In[6]:=
Click for copyable input
Out[6]=
这里给出相应的最后部分.
In[7]:=
Click for copyable input
Out[7]=
这里给出所有子列表的第二部分.
In[8]:=
Click for copyable input
Out[8]=
这里给出所有子列表的最后两个部分.
In[9]:=
Click for copyable input
Out[9]=

用户总数通过类似 这样的赋值来重设列表的一个或多个部分.

这里重设 的第一部分和第二部分.
In[10]:=
Click for copyable input
Out[10]=
这是 的形式.
In[11]:=
Click for copyable input
Out[11]=
这里把第一部分重设为 ,并且把第三部分重设为 .
In[12]:=
Click for copyable input
Out[12]=
这里把第一部分和第三部分都重设为 .
In[13]:=
Click for copyable input
Out[13]=
这里重新存储 原先的形式.
In[14]:=
Click for copyable input
这里重设使用 指定的部分.
In[15]:=
Click for copyable input
Out[15]=
用户可以使用 ;; 来指定给定范围内所有索引.
In[16]:=
Click for copyable input
Out[16]=

有时,把一个嵌套列表想象为在空间的展开是有益的,这时,每个元素都是在由其索引所提供的坐标位置上. 对于,存在直接的几何解释. 如果一个给定的 是一个单一的整数,那么它表示在第 k 维提取单一的分块,而如果它是一个列表的话,它表示提取平行分块的列表. 那么 的最终结果是在每个连续纬度上分块所得到的元素集合.

这是一个显示为二维数组的嵌套列表.
In[17]:=
Click for copyable input
Out[17]//TableForm=
这里选出行1和行3,接着是列1和列2.
In[18]:=
Click for copyable input
Out[18]//TableForm=

Part 被设置使得提取嵌套列表的结构分片更为简单. 然而,有时用户可能想要选出由单一部分组成的任意集合. 也可以使用 Extract 方便地实现.

Part[list,{i1,i2,}]列表
Extract[list,{i1,i2,}]元素
Part[list,spec1,spec2,]由连续分片指定的部分
Extract[list,{{i1,i2,},{j1,j2,},}]单一部分 的列表

获取分片与获取单一部分组成的列表的比较.

这里提取单一部分1,3和1,2.
In[19]:=
Click for copyable input
Out[19]=

Extract 的重要特征是它对部分位置的列表采取与函数如 Position 返回的形式相同的形式.

这里建立一个嵌套列表.
In[20]:=
Click for copyable input
这里给出 中位置的列表.
In[21]:=
Click for copyable input
Out[21]=
这里从这些位置提取元素.
In[22]:=
Click for copyable input
Out[22]=
Take[list,spec]选出列表的指定部分
Drop[list,spec]丢弃列表的指定部分
Take[list,spec1,spec2,], Drop[list,spec1,spec2,]在嵌套列表的每一层选出或丢弃指定部分
nn 个元素
-n最后 n 个元素
{n}仅含元素 n
{m,n}元素 mn (闭区间)
{m,n,s}元素 mn,步长为 s
All所有部分
None没有部分

在列表中选出和丢弃元素序列.

这里选出所有从位置2开始的第二个元素.
In[23]:=
Click for copyable input
Out[23]=
这里丢弃所有的第二个元素.
In[24]:=
Click for copyable input
Out[24]=

Part 很相似,TakeDrop 可以视为在嵌套列表的连续层中选出块的序列,用户可以使用 TakeDrop 来对数组中的元素块进行操作.

这是一个3×3数组.
In[25]:=
Click for copyable input
Out[25]//TableForm=
这是前 2×2 个子数组.
In[26]:=
Click for copyable input
Out[26]//TableForm=
这里取出前两列的所有元素.
In[27]:=
Click for copyable input
Out[27]//TableForm=
这里没有保留前两列元素.
In[28]:=
Click for copyable input
Out[28]//TableForm=
Prepend[list,elem]list 的开头加入 element
Append[list,elem]list 的末尾加入 element
Insert[list,elem,i]在位置 i 插入 element
Insert[list,elem,{i,j,}]在位置 插入
Delete[list,i]在位置 i 删除元素
Delete[list,{i,j,}]在位置 删除

在列表中加入和删除元素.

这里令列表的第2,1位置上的元素为 .
In[29]:=
Click for copyable input
Out[29]=
这里再次删除元素.
In[30]:=
Click for copyable input
Out[30]=
ReplacePart[list,i->new]new 替换 list 中位置 i 上的元素
ReplacePart[list,{i,j,}->new]new 替换
ReplacePart[list,{i1->new1,i2->new2,}] 替换位置 上的部分
ReplacePart[list,{{i1,j1,}->new1,}] 替换位置 上的部分
ReplacePart[list,{{i1,j1,},}->new]new 替换所有部分

替换列表的部分.

这里使用 取代矩阵的第3个元素.
In[31]:=
Click for copyable input
Out[31]=
这里取代列表的第一和第四部分. 注意在指定多个部分来取代的情况下,需要双列表.
In[32]:=
Click for copyable input
Out[32]=
这是一个3×3单位矩阵.
In[33]:=
Click for copyable input
Out[33]=
这里使用 取代矩阵的2,2部分.
In[34]:=
Click for copyable input
Out[34]=

理解 ReplacePart 总是创建一个新的列表是重要的. 它并不像 那样改变已经赋给一个符号的列表.

这里把值的列表赋于 .
In[35]:=
Click for copyable input
Out[35]=
这里给出列表的拷贝,其中第三个元素由 取代.
In[36]:=
Click for copyable input
Out[36]=
的值没有被更改.
In[37]:=
Click for copyable input
Out[37]=