• perl语言入门总结-第3章-列表与数组


    1-列表list指的是标题的有序集合, 而数组(array)则是存储列表的变量。 

    更精确地说,列表指的是数据,而数组指的是变量。 

    访问数组中的元素

    $fred[0] = "yabba";
    $fred[1] = "dabba";
    $fred[2] = "doo";
    
    $number = 2.71111;
    print $fred[$number-1]; #dabba  如果下标不是整数,会舍去小数。
    print $fred[145] #如果不存在下标则返回 undef

    特殊数组索引, 获得最后一个元素

    $rocks[0] = "one";
    $rock[99] = 'last';
    print $rock[$#rock] ; #last
    print $rock[-1]; #last

    列表直接量

    (1,2,3)  (1,2,3,)  ("friend",11)  () (1..100)
    (1.7..5.7) (5..1)空列表 (0,2..6,10,12)
    ("fred", "barrbey"m "wilma")

    qw简写

    qw(fred barrbey wilma)

    qw允许使用任何标点符号作为定界符。

    qw/ fred barney betty /   #可以用反斜杠转义定义符

    列表的赋值

    ($fred, $barney, $dino) = ('a', 'b','c');
    print $barney; #结果为b
    
    ($a,$b)=($b,$a); #a,b两个变量值交换 

    数组变量赋值及简写

    ($rocks[0], $rocks[1], $rocks[2]) = qw/a b c/;
    @rocks = qw/a b c/; #上面方法的简写

    数组操作

    @a =qw/a b/;
    @b =(@a, "c", 'd'); #a,b,c,d

    pop与push操作, 操作的是最右端

    @array = 5..8;
    $array1 = pop(@array); #会从array中移除最后一元素元素8,返回8
    push @array, 100; #向后加100

    shift和unshift操作符, 操作的是最左端

    @array = qw# a b c d #;
    $m = shift(@array); #@array值为(b,c,d)
    unshift(@array, 100); #向前加入100即(100,b,c,d)

     splice操作符, 一共4个参数,2个可选参数, 次序为(目录@array,起如位置,元素的长度,要插入的@array)

    @array = qw( a b c d);
    @removed = splice @array, 2; 
    print @removed; #qw(c,d)
    print @array;#qw(a,b)

      插入一个元素

    @array = qw( a b c d);
    @removed = splice @array, 2, 0 ,qw(g); 
    print @array;#qw(a,b,g,c,d) 删除0个,然后在2个位置插入g, 

    foreach使用, 如何在foreach中使用,不会改变foreach那个对象的值

    foreach $rock (qw/a b c d/){
        print "$rock
    "
    }

    最喜欢用的默认变量 $_  , 下面例子会打印从1到100的数值

    foreach (1..100){
        print "$_ 
    "
    }

    reverse操作符, 反序

    @newone = reverse 6..10; #不会影响原来的数组

    sort操作符,后面再讲自定义排序,,默认根据ascii码大小排序

    @numbers = sort 97..102; # 100 101 102 97 98 99

    each操作, 遍历会带索引

    use 5.0.12;
    my @rocks = qw/a b c d/;
    while (my($index, $value) = each @rocks){
        print "$index:$value,"; #0:a,1:b,2:c,3:d,
    }

    标题上下文与列表上下文(重点)

    @people = qw(d a b c);
    @sorted = sort @people;  #结果为 qw(a,b,c,d)
    $number = 42 + @people; #结果为46
    
    #普通运算符
    @list = @people; #得到4个人的列表
    $n = @people; #得到人数3

    标题表达式

    $fred = something; #标题上下文
    @pebbles = something; #列表上下文
    ($wilma, $betty) = something; #列表上下文
    ($dino) = something; #还是列表上下文
    
    @fred= 6*7; #得到仅有单个元素的列表(42)
    @barney = "hello".' '."world"; #("hello world")

    强制指定标量上下文

    @rocks = qw(a b c d);
    print "num is ".scalar @rocks; #num is 4

    列表上下文的STDIN

    @lines = <STDIN>;
    chomp(@lines); #去掉所有换行符

  • 相关阅读:
    2017寒假练习赛总结(实时更新)
    NOIP
    挖坑--总结
    BZOJ3709: [PA2014]Bohater
    BZOJ3714: [PA2014]Kuglarz
    BZOJ2276: [Poi2011]Temperature
    VIJOS P1543极值问题
    BZOJ2749: [HAOI2012]外星人
    BZOJ2173: 整数的lqp拆分
    BZOJ1100: [POI2007]对称轴osi
  • 原文地址:https://www.cnblogs.com/qinzb/p/9175558.html
Copyright © 2020-2023  润新知