zoukankan      html  css  js  c++  java
  • 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); #去掉所有换行符

  • 相关阅读:
    luogu 1865 数论 线性素数筛法
    洛谷 2921 记忆化搜索 tarjan 基环外向树
    洛谷 1052 dp 状态压缩
    洛谷 1156 dp
    洛谷 1063 dp 区间dp
    洛谷 2409 dp 月赛题目
    洛谷1199 简单博弈 贪心
    洛谷1417 烹调方案 dp 贪心
    洛谷1387 二维dp 不是特别简略的题解 智商题
    2016 10 28考试 dp 乱搞 树状数组
  • 原文地址:https://www.cnblogs.com/qinzb/p/9175558.html
Copyright © 2011-2022 走看看