索引是获取元胞数组和列表中的单个元素,切片则是获取元胞数组和列表中的连续多个元素。[大谦MATLAB,dqmatlab点com]
索引
元胞数组有元胞索引和内容索引两种索引方式,用小括号进行元胞索引,用大括号进行内容索引。列表用中括号进行索引。
【MATLAB】
通过给单个元胞赋值来生成元胞数组时,每次给一个元胞赋值。给元胞赋值有以下两种方式:
元胞索引:按标准数组方式把元胞索引号放到小括号中,把元胞的内容放在赋值语句的右端,用大括号括起来。下面通过元胞索引创建一个22的元胞数组A:
>> A(1,1)={[1 4 3; 0 5 8; 7 2 9]};
>> A(1,2)={'Liu zhong'};
>> A(2,1)={3+7i};
>> A(2,2)={-pi:pi/10:pi};
内容索引:以标准数组标注方式把元胞索引号以大括号括起来放在左侧,在赋值语句的右侧指定元胞内容。下面通过内容索引创建元胞数组A:
>> A{1,1}=[1 4 3; 0 5 8; 7 2 9];
>> A{1,2}='Liu zhong';
>> A{2,1}=3+7i;
>> A{2,2}=-pi:pi/10:pi;
所以,对于MATLAB元胞数组,可以进行元胞索引和内容索引,例如:
>> A={1,'ABC',[1 2 3],{1 'a'}}; %创建元胞数组
>> A(1) %元胞索引,第1个元素
ans =
1×1 cell 数组
{[1]}
>> A{1} %内容索引
ans =
1
默认时MATLAB使用元胞索引。
【Python】
创建列表和向列表添加元素后,如果希望获取列表中的某个或某部分元素并对它们进行后续操作,就要用到索引和切片。
使用[]进行列表索引操作,中括号中为要索引的元素在列表中的索引号。从左到右索引时,索引号的基数为0;从右到左索引时,索引号的基数为-1。
下面创建一个列表ls:
>>> ls=['a','b','c']
通过索引获取列表中的第3个元素:
>>> ls[2]
'c'
获取列表中倒数第2个元素:
>>> ls[-2]
'b'
使用index方法获取指定元素在列表中首次出现的位置。语法格式为:
index(value.[start, [end]])
其中,value为指定的元素,start和end指定搜索的范围。
下面首先创建一个列表a:
>>> a=[1,2,3,4,2,5,6]
获取元素2在列表中第一次出现的位置,注意位置索引基数为0:
>>> a.index(2)
1
从第3个元素开始到最后一个元素,在这个范围内获取元素2第一次出现的位置:
>>> a.index(2,2)
4
切片
与元胞数组的索引相对应,元胞数组有索引切片和内容切片两种方式。元胞数组和列表的切片都要使用冒号。
【MATLAB】
>> A={1,'ABC',[1 2 3],{1 'a'}}; %创建元胞数组
>> A(2:3) %元胞切片
ans =
1×2 cell 数组
{'ABC'} {[1 2 3]}
>> A(2:end) %元胞切片
ans =
1×3 cell 数组
{'ABC'} {[1 2 3]} {1×2 cell}
>> A{2:3} %内容切片
ans =
'ABC'
ans =
1 2 3
>> A{2:end} %内容切片
ans =
'ABC'
ans =
1 2 3
ans =
1×2 cell 数组
{[1]} {'a'}
【Python】
切片操作从给定的列表中连续获取多个元素。常见的列表切片操作如表8- 所示。切片操作完整的定义是[start:end:step],取值范围的起点、终点和步长之间用冒号间隔。这3个参数都可以省略。注意“包头不包尾”原则。
从左往右切片时,位置索引的基数为0。省略start参数时,起点为列表的第1个元素;省略end参数时,终点为列表的最后一个元素;省略step参数时,步长为1。
从右往左切片时,位置索引的基数为-1。各参数的值都为负,数字的大小为从右边往左边数数的大小。比如最后一个元素的索引号为-1,倒数第2个为-2,如此类推。
各种切片操作的示例如表8-2中所示。
表8-2 列表的切片操作
| 切片操作 | 说明 | 示例 | 结果 |
|---|---|---|---|
| [:] | 提取整个列表 | [1,2,3,4,5] [:] | [1,2,3,4,5] |
| [start:] | 提取从start位置开始到结尾的元素组成列表 | [1,2,3,4,5] [2:] | [3,4,5] |
| [:end] | 提取从头到end-1位置的元素组成列表 | [1,2,3,4,5] [:2] | [1,2] |
| [start:end] | 提取从start到end-1位置的元素组成列表 | [1,2,3,4,5] [2:4] | [3,4] |
| [start:end:step] | 提取从start到end-1位置的元素组成列表,步长为step | [1,2,3,4,5] [1:4:2] | [2,4] |
| [-n:] | 倒数n个元素组成列表 | [1,2,3,4,5] [-3:] | [3,4,5] |
| [-m:-n] | 倒数第m个到倒数第n个元素组成列表 | [1,2,3,4,5] [-4:-2] | [2,3] |
| [::-s] | 步长为s,从右向左反向提取组成列表 | [1,2,3,4,5] [::-1] | [5,4,3,2,1] |