美文网首页Perl语言学习
Perl学习02数组和哈希使用

Perl学习02数组和哈希使用

作者: pythonic生物人 | 来源:发表于2020-07-18 15:30 被阅读0次

    实例介绍Perl中数组和哈希的使用。
    首发于本人公众号:pythonic生物人

    更好的阅读体验请戳:

    Perl学习02数组和哈希使用

    目录

    1.数组( Arrays)

    数组定义
    数组元素连接
    数组长度,方法一
    数组长度,方法二
    遍历数组,方法一
    遍历数组,方法二
    数组末尾增加元素:push
    数组末尾删除元素:pop
    数组开头增加元素:unshift
    数组开头删除元素:shift
    颠倒数组元素顺序:reverse
    数组元素排序,sort,不会修改原数组
    从小到大排序
    数字从小到大排序,<=>两端传入数字
    按字符长度排序,长度相同时按数字大小排序
    可以自定义排序规则函数,sort sub_fun @array1

    2.哈希(Hash)

    哈希定义
    调用哈希元素
    新增或更改某个键值对
    返回哈希所有键,返回哈希所有值
    遍历哈希键值对
    判断哈希是否存在某个键

    数组( Arrays)

    以@开头,类似python中列表(list),例如数组array1表示为@array1。

    例如, array1.pl

    #!/usr/bin/perl
    use strict;
    use warnings;
    
    my $out="test";
    
    #数组定义
    my @array1=(1,"apple",$out);#一个列表中可储存不同类型的数据,可引用外部变量
    print "#数组元素调用\n";
    print "$array1[0]\n";#以"$"开头,并带上数组下标索引
    
    #数组元素连接
    my $array1_join=join("\t", @array1);
    print "$array1_join\n";
    
    #数组长度,方法一
    my $len_array1=$#array1+1;#$#array1为数组最大索引值
    print "$len_array1\n";
    
    #数组长度,方法二
    my $len_array2= scalar @array1;
    print "$len_array2\n";
    
    #遍历数组,方法一
    foreach (@array1){
            print "$_\n";
    }
    
    #遍历数组,方法二
    foreach (0..$#array1){
            print "$array1[$_]\n";
    }
    
    #数组末尾增加元素:push
    my $array_push="coco";
    push (@array1,$array_push);
    print "@array1\n";
    
    #数组末尾删除元素:pop
    my $pop_v=pop @array1;
    print "$pop_v\n";
    print "@array1\n";
    
    #数组开头增加元素:unshift
    my $array_unshift="rose";
    unshift (@array1,$array_unshift);
    print "@array1\n";
    
    #数组开头删除元素:shift
    my $shift_v=shift @array1;
    print "$shift_v\n";
    print "@array1\n";
    
    #颠倒数组元素顺序:reverse
    my @array2=reverse @array1;
    print "@array1\n";#reverse不会修改原数组
    print "@array2\n";#reverse只会修改返回值
    
    #数组元素排序,sort,不会修改原数组
    my @array3=sort @array1;#默认按照ASCII顺序,从小到大排序
    my @array4=sort { $b cmp $a } @array1;#按照ASCII顺序从小到大排序
    my @array5=sort { $a <=> $b } (1, 2, 3, 4); #数字从小到大排序,<=>两端传入数字
    my @array6=sort { length($b)<=>length($a)} (1, 5, 11, 14); #按字符长度排序,长度相同时按数字大小排序
    # 可以自定义排序规则函数,sort sub_fun @array1;
    print "@array1\n";
    print "@array3\n";
    print "@array4\n";
    print "@array5\n";
    print "@array6\n";
    

    哈希(Hash)

    以%开头,例如哈希hash1表示为%hash1,类似python中字典(dict),以键(key)值(value)对存储数据,哈希重要使用规则:

    1. key必须唯一;
    2. 键值对在哈希中无顺序存放;

    例如,hash1.pl

    #!/usr/bin/perl
    use strict;
    use warnings;
    
    #哈希定义
    my %hash1=("chr13"=>"T13","chr18"=>"T18","chr21"=>"T21");
    
    #调用哈希元素
    print "$hash1{'chr13'}\n";
    
    #新增或更改某个键值对
    $hash1{'chr13'}="chr13+";
    print "$hash1{'chr13'}\n"; #更改
    
    $hash1{'chr16'}="T16";
    print "$hash1{'chr16'}\n";#新增
    
    
    #返回哈希所有键,返回哈希所有值
    my @k=keys %hash1;#keys函数取出所有键存入数组@k
    my @v=values %hash1;#values函数取出所有键存入数组@v
    print "@k\n";
    print "@v\n";
    
    #遍历哈希键值对
    my($k1,$v1);
    while(($k1,$v1)=each %hash1){
            print "$k1=>$v1\n";
    
    }
    
    #判断哈希是否存在某个键
    print "Exists\n" if exists $hash1{'chr13'};
    
    干货,真香

    相关文章

      网友评论

        本文标题:Perl学习02数组和哈希使用

        本文链接:https://www.haomeiwen.com/subject/iaffkktx.html