-1-------------------------------------------------------------------------------------------------------------
在perl代表复数就是列表和数组。
什么是列表:
列表指的标量的有序集合(精确地说列表是数据)。
什么是数组:
数组则是存储列表的变量(精确地说数组指的是变量)。
列表和数组关系:
列表的值不一定存储在数组,但每个数组变量都一定包含一个列表。
列表和数组的第一个元数总是第0个元数。
-1-------------------------------------------------------------------------------------------------------------
-2-------------------------------------------------------------------------------------------------------------
访问数组中的元数:
数组元素是以连续的整数来编号,从0开始,之后的每一个元数依次加1,例:
@test=[1,2,3,4,56,7,8,10];
$test[0]; #result is 1
$test[1]; #result is 2
$test[10]='11'; #给@test数组的第11个元素赋值为11;
特殊的数组索引:
假如你索引值超过数组尾端的元素进行赋值,数组将会需要自动扩大---只要有可用的内存分给perl,数组的长度是有上
限的。
$test[0] = 'test1';
$test[1] = 'test2';
$test[2] = 'testn';
在有些情况下你想访问数组的最后一个元素的索引值,对test来说最一个元素的索引值是$#test.
$new = $#test; #数组元素索引的最后一个值。
从数组尾端往回计数的"负数数组索引值"。不过,超过数组大小的负数索引值是不会绕回来的。
@test=[1,2,3,4,5,6];
$test[-1]; #result is 6
$test[-2]; #result is 5
$test[-7]; #result is undef
-2-------------------------------------------------------------------------------------------------------------
-3-------------------------------------------------------------------------------------------------------------
列表直接量:
列表直量(list literal,也就是在程序中代码中表示一列数据的写法),可以由圆括号内逗号隔开的一串数据表示,
而这些数据就称为列表元素。
(1,2,3,4,5); #包含5个元素的数字列表
(); #空元素列表
(1..100); #100个整数元素的数字列表。
.. 是一个范围捷操作符(range operator)
(1..5); #与(1,2,3,4,5)相同
(1.7..5.7); #同上,但小数部分被去掉
(5..1); #空列表-----..只能向上计数
qw简写:
qw表示:"quoted word"(加上引号的单词),perl会将其当成单引号内字符串来处理(所以,在qw构建的列表中,不能像
双引号内的字符串一样使用\n or $fred)。其中空白符(比如空格,制表符以及换行符)会被抛弃。
qw(
test1
test2
test3
test4
);
员括号作为定界符,perl还允许其他任何标点符号来作为定界符。
qw! test1 test2 test3 test4!;
qw/ test1 test2 test3 test4/;
qw# test1 test2 test3 test4#;
列表的赋值:
($test1,$test2,$test)=("hello1","hello2,","hello3");
($test1,$test2)=($test2,$test1); #交换两个变量的位置
-3-------------------------------------------------------------------------------------------------------------
-4-------------------------------------------------------------------------------------------------------------
pop和push操作符(对数组尾部操作):
要新增元素到数组尾端时,只要将它存放到更高的索引值对应的新位置上。
pop,负责取出数组中最后一个元素并将其作为返回值返回:
@array = 5..9;
$fred = pop(@array); #$fred 变成9,@array现在是(5,6,7,8)
$barney = pop @array; #$barney 变成8,现在是5,6,7
pop @array; #@array现在是(5,6).
push, 用于添一个元素(或是一串元素)到数组的尾端。
push(@array,0); #@array现在是(5,6,0);
push @array,8; #@array现在是(5,6,0,8);
push @array,1..10; #@array得到了10个元素。
@others = qw/9 0 2 1 0/;
push @array,@others; #@array又得到了5个新元素。
shift和unshift操作符(对数组开头):
shift,是对数组开头取出第一个元素将其值作为返回值
@test =qw( test1 test2 test3);
$t = shift @test; #$m的值为test1,@test数组现是(test2,test3);
$s = shift @test; #$s的值为test2,@test数组现是(test3);
shift @test; #现在@test为空了
$u = shift @test; #$u values is undef;
unshift,是对数组开头添加一个元素;
unshift (@test,5); #now @test only has one liter(5);
unshift (@test,4), #now @test have 4,5
@other = 1..3;
unshift (@test,@other); #now @test have 1,2,3,4,5,6;
splice操作符
是用来对数组中的某个元素添加或移除捷操作。
第一个参数是操作的目标数组,
第二个参数是操作数组的一组元素的开始位置。
第三个参数指定操作元数长度(表示要操作元素的个数,即长度)。
@arrary = qw( test1 test2 test3 test4 test5);
@removed = splice @array 1,2; #remove test2 test3
#@removed 变成(test2 test3);
#@rarray 变成qw(test1 test4 test5);
@array = qw(pbbles dino fred barney);
@removed = splice @array,1,2,qw(wilma); #删除dino and fred
#@removed 变成qw(dino fred);
#@array变成qw(pebbles wilma barney betty);
@array = qw(bebbles dino fred barney):
@removed = splice @array,1,0,qw(wilma); #什么元素都不删除
#@removed 变成qw()
-4-------------------------------------------------------------------------------------------------------------
-5-------------------------------------------------------------------------------------------------------------
reverse操作符:
reverse操作符会读取列表的值(也许是数组),并按相反的次序返回该列表。
@fred = 6..10;
@barney = reverse(@fred); #得10,8,7,6
@wilma = reverse 6..10; #同上,但不需要额外的数组
@fred = reverse @fred; #将逆序后的结果放回原来那个数组
-5-------------------------------------------------------------------------------------------------------------
-6-------------------------------------------------------------------------------------------------------------
each操作符:
每次对数组调用each,会返回数组下一个元素。
!perl
my @test =qw(test1 test2 test3);
while(my $t = each @test)
{
print "$t\n";
}
-6-------------------------------------------------------------------------------------------------------------
-7-------------------------------------------------------------------------------------------------------------
scalar, 用来计算数组元素的个数.
@v=qw(1 2 3 4 );
$value = scalar(@v); #result is 4;
-7-------------------------------------------------------------------------------------------------------------
perl列表与数组
最新推荐文章于 2024-07-05 09:42:00 发布