Perl中的数组操作
<1> 数组的长度:
如果把数组变量赋值给标量变量,那么赋给标量变量的就是数组的长度:
$a = @Array;#标量变量$a中存放的是数组@Array的长度,即:数组中元素的个数;
($a,$b,$c) = (1,2,3); #则把1赋值给$a,把2赋值给$b,把3赋值给$c;
怎么给数组赋值数组中的最后⼀个元素的下标索引由数组的特殊变量$#ArrayName决定;⽤“$#+数组名”表⽰⼀个特殊变量,这个变量中存放的是数组中最后⼀个存储单元的下标索引值;
$#ArrayName⼜称为最后单元索引值,它总是表⽰数组中最后⼀个存储单元的下标值;
所以可以使⽤这个特殊变量“$#数组名”也可以计算数组中元素的个数:
#ArrayLength = $#ArrayName+ 1;
与数组中最后⼀个存储单元对应的是第⼀个存储单元,Perl中使⽤数组的特殊变量“$[”来表⽰数组中第⼀个存储单元的下标值,即:数组中第⼀个存储单元的索引值;⽽且可以通过修改这个特殊变量的值来改变数
组中第⼀个存储单元的下标索引值,期于的存储单元的下标索引值则是在特殊变量“$[”的值的基础上顺序累加1得到;
数组的特殊变量“$# + 数组名”表⽰数组中最后⼀个存储单元的下标索引值,Perl中可以通过改变这个特殊变量的值来增加或删除数组中的元素;
例如:要在数组@Array的末尾填加N个新元素的空间时,可以这样做:
$#Array += N;或@Array[$#Array + 1] = 值;
这就说明可以使⽤特殊变量“$# + 数组名”来设置数组的长度。Perl允许在数组中随时填加新的数组单元,这个时候系统会在新加⼊数组单元时⾃动扩展数组的存储空间和长度。所以说,Perl中的数组是动态数组;这在处理⼩的数组的时候⽐较⽅便,但是需要处理的数据量⽐较⼤的时候,却会使程序运⾏的速度⼤⼤减慢。这是每加⼊⼀个新的数组单元,系统都会⾃动扩展数组的空间和长度,⽽扩展操作是需要时间的,所以程序会变慢;如果可以事先知道需要处理的数组的长度,那么可以通过设置特殊变量“$# + 数组名”来初始化数组的存储单元空间,⽽后再使⽤数组,这样就会提⾼数据的处理效率;
<2> 增加和删除数组中的元素:
通过增加特殊变量“$# + 数组名”的值可以为数组增加新的元素,此时Perl会⾃动扩展数组的存储空间:
$Array[$#Array++] = $NewVar;
通过减⼩特殊变量“$# + 数组名”的值可以删除数组中的元素,此时Perl会⾃动回收数组的存储空间:
$#Array++ ; #删除最后⼀个元素
$#Array += N;#删除最后N个元素
如果要把数组置为空数组,则只需要把“$# + 数组名”设置为-1即可:$#Array = -1;
Perl中默认的数组单元下标编号为从0开始,依次递增,但是如果程序有特殊需要的话,可以通过改变数组的特殊变量“ $[”的值来改变数组存储单元的下标索引的起始值。$[可以设置为任意数值,剩余的编号仍然在这个值的基础上依次递增;
<3> 数组数据的读取:
读取⼀个元素的值:$A = $Array[$Index];或 $A = @Array[$Index];
读取部分元素的值:@SubArray = @Array[$StartIndex .. $EndIndex];#这个也是读取⼦数组的⽅法;
注意:访问读取数组@Array中的元素时,如果给出的下标$Index超过了数组@Array的下标范围,就说
明要访问的元素不存在,此时就返回⼀个未定义值或空值(None/null);
<4> ⼦数组:
在读取数组元素值的时候,可以读取数组中的⼀部分元素做为另外⼀个新的数组使⽤,这个新的数组称为⼦数组或数组分块;⼦数组的规则与数组相同;
⼦数组使⽤字符“@”和“[ ]”共同定义:@SubArray = @ParentArrayName[StartIndex .. EndIndex];引⽤数组中元素的时候,可以引⽤数组中不连续的单元,也可以不按顺序来引⽤数组单元或给数组单元赋值;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论