大家好,欢迎来到IT知识分享网。
数组是存储多个数据的变量类型,本篇文章通过几个角度学习理解数组。
1、数组变量的赋值与读取
数组的赋值与读取请见上一篇文章:变量的赋值与读取
2、数组的大小
数组的大小用到一个上下文的设定,上下文是指表达式的位置,即同一个表达式出现在不同位置会产生不同含义。举例来说:
#!/user/bin/perl -w use strict @array = (1,2,3); $size = @array ; print "$size \n";
由于$size是标量,所以$size=@array;返回的就是标量,这就是标量上下文,所以这里运行的结果就是3,即数组@array的大小。
./script.pl -> 3
这里的大小指的不是元素的个数,而是索引值的大小,索引值最小是0,最大是2,所以返回值是3,举例来说:
#!/user/bin/perl -w use strict @array = (1,2,3); $array[100] = 100 ; $size = @array ; print "$size \n";
给数组@array加入了一个索引值100的新元素,这里的返回值就是是101。
./script.pl -> 101
要起到相同效果可以使用scalar命令,$size=scalar @array,虽然多了一个scalar但是阅读起来会更直观。
想要返回最大的索引值可以用”@#array“
#!/user/bin/perl -w use strict @array = (1,2,3); $array[100] = 100 ; $size = $#array ; print "$size \n";
返回值就是100。
./script.pl -> 100
3、 添加和删除数组元素(push、pop、shift、unshift)
这里会用到push、pop,shift和unshift四个命令。
”push“,在数组后添加新元素(可以添加多个元素彼此之间用逗号”,“隔开,也可以直接添加数组)。
#!/user/bin/perl -w use strict @array = (1,2,3); @list = (4,5); push (@array,@list); print "$array[-1] \n";
运行结果如下:
./script.pl -> 5
“pop”,删除最后一个元素。
#!/user/bin/perl -w use strict @array = (1,2,3); pop @array; print "$array[-1] \n";
运行结果为:
./script.pl -> 2
”shift“,删除第一个元素,所有元素索引值依次减一。
#!/user/bin/perl -w use strict @array = (1,2,3); shift @array; print "$array[0] \n"; print "$#array\n"; #返回最大索引值
运行结果如下:
./script.pl -> 2 1
”unshift“,在数组开头添加新元素。
#!/user/bin/perl -w use strict @array = (1,2,3); @list = (4,5); push (@array,@list); print "$array[0] \n";
运行结果如下:
./script.pl -> 4
4、替换数组元素(splice)
数组元素替换需要使用splice命令,格式为:splice(@array_name ,Start ,Num, List)。其中Start为起始点的索引值,Num为替换元素数量,List为替换的列表。
#!/user/bin/perl -w use strict @array = (1,2,3); splice (@array,1,1,List; #把索引值为”1“即第数组@array的二个元素替换成”LIST“ print "$array[1] \n"; splice (@array,1,1); #不提供替换的元素列表相当于删除元素 print "$array[1] \n";
运行结果为:
./script.pl -> List 3
5、将字符串转换为数组(split)
使用”split“可以把字符串拆分成数组,使用方式为split(”PATTERN“,STRING),PATTERN定义字符串中的分隔符,STRING是字符串,可以用标量代替,PATTERN如果是”“即空的,就会把字符串中所有字符都拆分成一个个元素加入到数组中。
#!/user/bin/perl -w use strict $list = "1,2,3"; @array = split ("",@array); #把字符串每个字符都转换成数组@array的元素 print "$array[1] \n"; @array = split (",",@array);; #把逗号当作分隔符 print "$array[1] \n";
运行结果为:
./script.pl -> , 2
6、数组排序 (sort)
sort的排序是按照 ASCII 数字值来排序的,这就意味着首字母是大写字母会排在首字母小写字母前面,小写字母按照【a-z】的顺序排序,数字排序就会因为值对首位数字排序导致排序不准。
#!/user/bin/perl -w use strict @array = (Z,a,z,11,2); @asort = sort (@array); print "@sort \n";
运行结果如下:
./script.pl -> 11 2 Z a z
为了准确进行数字排序可以使用飞船符“<=>”,{$a<=>$b}是正序 {$b<=>$a}是倒序。
#!/user/bin/perl -w use strict @array = (10,9,8); @sort = sort (@array); print "@sort \n"; @sort = sort ({$a<=>$b}@array); #正序 print "@sort \n"; @sort = sort ({$b<=>$a}@array); #倒序 print "@sort \n";
运行结果为:
./script.pl -> 10 8 9 8 9 10 10 9 8
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/118026.html
