列表的分组和填充

Partition[list,n]list 分为长度为 n 的子列表
Partition[list,n,d]使用偏移量 d 划分子列表
Split[list]list 分成相同元素的子列表
Split[list,test]分成相邻元素满足 test 的子列表

对列表中的元素进行分组.

这里把列表划分为大小为3的块.
In[1]:=
Click for copyable input
Out[1]=
这里以偏移量1把列表分为大小为3的块.
In[2]:=
Click for copyable input
Out[2]=
该偏移量可以大于块大小.
In[3]:=
Click for copyable input
Out[3]=
这里分成具有相同元素的子列表.
In[4]:=
Click for copyable input
Out[4]=
这里分成相邻元素不相等的子列表.
In[5]:=
Click for copyable input
Out[5]=

Partition 遍历一个列表,并把相邻的元素分成子列表. 默认情况下,它没有包含任何令原列表悬空的子列表.

这里在出现任何悬空之前停止操作.
In[6]:=
Click for copyable input
Out[6]=
以下例子也同样适用.
In[7]:=
Click for copyable input
Out[7]=

用户可以告诉 Partition 包含令原列表末尾悬空的子列表. 默认情况下,通过周期性地处理原来的列表,它可以填入其他额外的元素. 它也可以根据用户指定的元素进行填充.

这里包含了另外的子列表,并认为原先的列表是周期性的.
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]=

用户可以认为 Partition 是通过在原列表使用模版并选出元素来提取子列表. 用户可以告诉 Partition 在什么位置开始和停止该过程.

这里给出所有与原来的列表重叠的子列表.
In[12]:=
Click for copyable input
Out[12]=
这里只允许开头的重叠.
In[13]:=
Click for copyable input
Out[13]=
Partition[list,n,d] Partition[list,n,d,{1,-1}]只保留没有悬空的子列表
Partition[list,n,d,{1,1}]允许在末尾有悬空
Partition[list,n,d,{-1,-1}]允许在开头有悬空
Partition[list,n,d,{-1,1}]允许在开头和末尾都有悬空
Partition[list,n,d,{kL,kR}]指定第一个和最后一个子列表的对齐
Partition[list,n,d,spec]通过在 list 中周期性地重复元素进行填充
Partition[list,n,d,spec,x]通过重复元素 x 填充
Partition[list,n,d,spec,{x1,x2,...}]
通过周期性地重复 填充
Partition[list,n,d,spec,{}]不使用填充

指定对齐和填充.

对齐规格 告诉 Partition 给出子列表的序列,其中原列表的第一个元素在第一个子列表的位置 出现,而原列表的最后一个元素在最后一个子列表的位置 出现.

在第一个子列表中,令 出现在位置1.
In[14]:=
Click for copyable input
Out[14]=
这里令 出现在第一个子列表的位置2.
In[15]:=
Click for copyable input
Out[15]=
这里令 首先出现在位置4.
In[16]:=
Click for copyable input
Out[16]=
从给定的列表周期性地进行填充.
In[17]:=
Click for copyable input
Out[17]=

函数如 ListConvolve 使用与 Partition 相同的对齐和填充规格.

在一些情况下,对列表进行明确的填充插入可能是方便的. 这可以通过使用 PadLeftPadRight 实现.

PadLeft[list,n]通过在左边插入零进行填充,以达到长度 n
PadLeft[list,n,x]通过重复元素 x 进行填充
PadLeft[list,n,{x1,x2,...}]通过周期性地重复 进行填充
PadLeft[list,n,list]通过周期性地重复 list 进行填充
PadLeft[list,n,padding,m]在右边留出 m 个元素大小的空白
PadRight[list,n]在右边插入零进行填充

填充列表.

这里对列表进行填充,使其长度为6.
In[18]:=
Click for copyable input
Out[18]=
这里以填充方式插入 .
In[19]:=
Click for copyable input
Out[19]=
这里在右边留出大小为3的空白.
In[20]:=
Click for copyable input
Out[20]=

PadLeftPadRightPartition 都可以用于嵌套列表.

这里生成一个3x3数组.
In[21]:=
Click for copyable input
Out[21]=
这里使用偏移量1把数组分成2x2的块.
In[22]:=
Click for copyable input
Out[22]=

如果用户给出一个嵌套列表作为填充规格,在每一层周期性地选出它的元素.

这里周期性地填入填充列表的拷贝.
In[23]:=
Click for copyable input
Out[23]=
以下是一个仅包含填充的列表.
In[24]:=
Click for copyable input
Out[24]=
New to Mathematica? Find your learning path »
Have a question? Ask support »