zoukankan      html  css  js  c++  java
  • 列表与数组 Perl入门第三章

    列表List 是标量的有序集合。数组array则是存储列表的变量。数组/列表的每个元素element都是单独的标量变量,拥有独立的标量值。

    1. 

    数组:

     访问数组中的元素: $fred[0]="yaya";$fred[1]="yaya1";$fred[2]="yaya"  ...  $fred[99]=“last"

     特殊的数组索引:$#fred  fred数组最后一个索引值;  fred[$#fred] ="last"

                               $fred[-1] ="last"       

    2.                 

    列表:

     列表直接量:

                         (1..5)     #(1 ,2. 3, 4, 5)

                         ($m..$n)  #m n 之间的部分

                        (0, $#fred)  #0 ~ 99

    qw简写 # quoted word 加上单引号的单词,当作单引号内的字符串来处理。不能像双引号一样使用 和 $fred 替换。空白符(空格,制表符,换行符)会被抛弃。

                       qw( a b c)

                       qw# a b c#

                       qw! a b c !

    列表的赋值:

                   列表值赋给变量   ($a , $b , $c)=("m" , "n" , "t")
                   变量值交换   ($a ,$b)=($b ,$a)

                     (fred[0] , fred[1], fred[2], fred[3]) = qw/a b c d/

                      @fred=qw/a b c d/

                      @stuff =(@fred , undef , @fred)  # 9个元素

                      @copy = @stuff

    pop and push  # 处理尾端

                      $k =pop(@fred)  # $k=d

                      $s = pop(@fred)  #$s=c

                     push(@fred,9)  # a b 9

                     push(@fred,4)# a b 9 4

    shift and unshift  #处理开头

                       $o = shift(@fred)  #  $o = a

                        $c = shift(@fred) # $c = b

                       shift @fred

                       shift @fred   #变空

                       $k=shift  @fred   #$k=undef

           unshift(@fred, 1)  # @fred 有一个元素 1

           unshift @fred,2  #@fred 有元素 1 和 2

    splice 添加/移除数组中间元素。4个参数,第一个为目标数组,第二个操作开始位置,第三个操作长度,第四个参数为要替换的列表。

    @fred = qw/ a b c d/

    @remove = splice @fred,1,2,qw/ t /   #@remove = qw/b c/   ; @fred = qw/ a t d/

    @fred = qw/ a b c d/

    @remove = splice @fred,1   #  结果@remove = qw /b c d/  @fred = qw/ a /

    @fred = qw/ a b c d/

    @remove = splice @fred,1 ,2  # 结果@remove  = qw / b c/  @fred = qw/ a d/

    3. foreach

    控制变量不是列表的复制品,它是列表元素本身,改变这个值即改变列表

    循环结束后,控制变量的值会自动还原。变为循环之前的值。不用担心有变化。

    foreach $a (qw/ 1 2 3 4/) {

    print "$a ";

    }

    @rock = qw/ 1 2 3 4/

    foreach $a  (@rock)  {

    print "$a ”;

    }

    foreach  (1 .. 10)  {   #省略控制变量,perl 使用默认变量$_

    print "i can count to $_";

    }

    4.reverse  #返回次序相反的列表,但不会改变传入的参数。

    @fred = 6..10

    @fred = reverse @fred;  #10,9,8,7,6

    5.sort  按Unicode代码点排序,大写字母在小写字母前面;数字在字母前,标点符号四处散落。非早期的ASCII排序

    @number = sort 97..102  #100 101 102 97 98 99

    6. each 返回2个值,索引和元素值

    my @rocks = qw/a b c d e f/

    while( my($index ,$value) = each @rocks ) {

    say "$index:$value";

    }

    7.标量上下文与列表上下文

    同一表达式在不同位置,意义不同。

    数字方式操作时得到数字结果;字符串方式操作时得到字符串结果。起决定性作用的是操作符

    42 + something  #  something必须为标量

    sort something  #something必须为列表

    @p = qw / a b cf/

    @list =@p   #得到 qw/a b cf/

    $t = @p   #得到3

    哪种更有意义就会得到这个返回值.不一定返回元素个数

    @b = reverse @p    # qw/cf b a/

    $v = reverse @p   # fcba

    $a = something  #标量上下文

    @a = something   #列表上下文

    ($u , $o)=something # 列表上下文

    ($dia) = something  #列表上下文

    标量上下文:

    $fred = something

    $fred[2]=something

    123+something

    something + 654

    if (something) {..}

    while ( something) { }

    $fred[something] = something

    列表上下文:

    @fred =something

    ($u , $o)=something # 列表上下文

    ($dia) = something  #列表上下文

    push @fred,something

    foreach $fred (something) { ..}

    sort something

    reverse something

    print something

    陷阱:

    @fed = 6*7  #仅有单个元素42的列表

    @fred="hello“ . ' ' . "world"

    @betty = ( )#清空数组

    @wilam = undef  #仅有一个未定义的列表

    scalar 强制指定标量上下文

       scalar @rocks  #石头的种类

    8.

    chomp(@lines = <STDIN>);  #读入所有行,去除换行符

  • 相关阅读:
    1.python的Helloword
    java实现多个属性排序---按照实体的多种属性值进行排序(ComparableComparator/ComparatorChain)
    Spring Boot 2.X(一):入门篇
    Nginx开启Gzip压缩提升页面加载速度
    QQ第三方授权登录OAuth2.0实现(Java)
    Windows下IIS搭建Ftp服务器
    【Java】支付宝获取人脸采集认证的图片base64格式
    【SpingBoot】spring静态工具类注入问题
    【linux】Tomcat 安装
    【linux】jdk安装及环境变量配置
  • 原文地址:https://www.cnblogs.com/lelin/p/11202313.html
Copyright © 2011-2022 走看看