Perl-2-列表與數(shù)組

一、簡(jiǎn)介

  • 列表:標(biāo)量的有序集合
  • 數(shù)組:儲(chǔ)存列表的變量
    區(qū)別:列表指的是數(shù)據(jù),數(shù)組指的是變量,列表的值不一定要放在數(shù)組里,但每個(gè)數(shù)組變量都一定包含一個(gè)列表。

二、訪問(wèn)數(shù)組中的元素

$fred [0] = "hello"
$fred [3.2] ;  " # 下標(biāo)不為整數(shù),自動(dòng)舍去小數(shù)。--等效于$fred[3] "

特殊的數(shù)組索引

  • 找到數(shù)組里最后一個(gè)元素的索引值:
法1:比如數(shù)組rock最后一個(gè)元素的索引值為:$#rock 
$rocks[ $#rocks ] = ' beatu '
法2: 負(fù)數(shù)索引值
$rocks[-1]  = ' beatu ' 

三、列表直接量

  • 列表直接量就是程序代碼中表示一列數(shù)據(jù)的寫(xiě)法
( 1, 2, 3 )     #含有1,2,3三個(gè)數(shù)字的列表
或者寫(xiě)成( 1, 2, 3, ) ,末尾的逗號(hào)會(huì)被忽略。
( 1..100 )      #100個(gè)整數(shù)構(gòu)成的列表
" .. " :范圍操作符
eg:( 1..4 )  等效于 ( 1,2,3,4 ), 也等效于( 1.6..4.6 )
( 5..1 )         #空列表:只能向上計(jì)數(shù)
( 0..$#rocks )   # rocks的所有索引值

qw(quoted word):建立簡(jiǎn)單的單詞列表,省去每個(gè)單詞都加 引號(hào)的麻煩

qw( fred barney batty hello )
同( "fred","barney","batty","hello" )
定界符除了圓括號(hào)還有:||,//, ##, {}

四、列表的賦值

  • 列表值也可被賦值給變量
( $fred, $bar, $dino ) = ( "fine", "rub", "und" )  # 三次賦值
( $fred, $barney ) = ( $barrney,$fred ); #交換兩個(gè)變量值 
當(dāng)希望引用整個(gè)數(shù)組時(shí):@
@rock = qw(hello ge gg man)
@quarry = ( @ rock,"yy","js") 

五、pop和push操作符

  • 新增元素到數(shù)組末尾
  • 刪除數(shù)組的最后一個(gè)元素
pop:負(fù)責(zé)取出數(shù)組中最后一個(gè)元素并將其作為返回值返回
@del = 5..9
$fred = pop(@del)    #$fred=9,del為( 5,6,7,8 );
push:添加一個(gè)或一串元素到數(shù)組的末尾
push(@del,0) ;        #del現(xiàn)在為( 5,6,7,8,0 )
push @del, 1..10 ;
push @del,@quarry ;
print @del ;    #打印列表

注意:push的第一個(gè)參數(shù)或pop的唯一參數(shù)都必須是要操作的數(shù)組變量,不能對(duì)列表直接進(jìn)行壓入或彈出

六、shift和unshift

  • 與pop和push類似操作,shift針對(duì)的是低下標(biāo)。
@array = qw(a b c) ;
$m = shift @array ;   #$m="a",@array為(b,c)
unshift ( @array, 5 ) #@array為(5,b,c);

七、splice操作符

  • pop/push/shift/unshift都是針對(duì)首尾操作的,針對(duì)中間某些元素用splice。
splice操作符:最多接受四個(gè)參數(shù)
第一個(gè)參數(shù):目標(biāo)數(shù)組
二:開(kāi)始位置
三:元素長(zhǎng)度
四:要替換的列表
@array = qw( a b c d )
@remove = splice @array, 1, 2, qw(wilma)  #刪除bc,替換wilma
#所以,@remove=qw(b c) ;@array=qw(a wilma d)

八、字符串中的數(shù)組內(nèi)插

  • 內(nèi)插:將數(shù)組內(nèi)容插到雙引號(hào)中,在數(shù)組的各個(gè)元素間自動(dòng)添加分隔用的空格。
print " quart @remove limestone \n " ; #內(nèi)插@remove數(shù)組的值
print "hanjing@outlook.com" #打印郵箱不能帶入數(shù)組,錯(cuò)誤
print 'hanjing@outlook.com' #用單引號(hào)避免

九、foreach控制結(jié)構(gòu)

  • 循環(huán):能逐項(xiàng)遍歷列表中的值,依次迭代。
foreach $rock ( qw/ bedrock slate lava / ) {
    print "One rock is $rock. \n"
}
控制變量是$rock:若此值缺省,該值默認(rèn)為$_.

控制變量是數(shù)組本身,若在循環(huán)中改變,列表值相應(yīng)也改變

十、reverse操作符

  • reverse操作符會(huì)讀取到列表的值,并按相反的次序返回該列表。
@a = reverse 6..10 ;
@b = reverse @b ;
reverse @b  # reverse不會(huì)改變傳進(jìn)來(lái)的參數(shù)
所以返回值沒(méi)有去處將沒(méi)有意義。 

十一、sort操作符

  • sort會(huì)根據(jù)內(nèi)部的編碼順序?qū)λ麄冞M(jìn)行排序。
@rock = qw/ bed slate lava / ;
@sorted = sort(@rocks) ; 
@back = reverse sort @rock ;
@num = sort 97..102  #得:100,101,102,97,98,99
將數(shù)字作為字符串來(lái)排序,1開(kāi)頭的數(shù)字會(huì)排在9開(kāi)頭的前面

十二、each

  • 調(diào)用each會(huì)返回下一個(gè)元素的值及其索引。
use 5.012
my @rocks = qw / a b c d / ;
while( my( $index,$value )  = each @rocks ){
    says "$index:  $value" ;
}

十三、標(biāo)量上下文與列表上下文

  • Perl會(huì)結(jié)合表達(dá)式的意思轉(zhuǎn)換字符串或數(shù)字的意思,取決于操作符。
@peple = qw( fred bar bet ) ;
@sort = sort @peple ; #列表上下文
$num = 42 + @peple    #標(biāo)量上下文
  • 標(biāo)量上下文產(chǎn)生列表的表達(dá)式
@bak = reverse qw / a g b fq / ; # f, b, g, a
$bake = reverse qw / a g b fq / ; # qfbga
$fred = something                 #標(biāo)量上下文
( $fred )  = something            #列表上下文()括號(hào)的作用
  • 在列表上下文產(chǎn)生標(biāo)量的表達(dá)式
@wilma = undef ;   #有一個(gè)元素為未定義的(undef)
@Betty = () ;    # 清空數(shù)組
  • 強(qiáng)制指定標(biāo)量上下文
使用偽函數(shù):scalar
@rock = qw ( ta f f d )  ;
print "I have ",@rock ," rocks! \n" # error
print "I have ", scalar @rock ," rocks! \n" # num
  • 列表上下文的< STDIN >
將鍵盤讀入的成為列表的元素。
@line = <STDIN> ; 
chomp(@line = <STDIN> ) ;
鍵盤輸入結(jié)尾用ctrl+D的方式標(biāo)記結(jié)尾(此處linux和Mac OS X系統(tǒng))
其他系統(tǒng),如Windows/DOS來(lái)告知系統(tǒng)用:ctrl+Z
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 列表和數(shù)組的概念與性質(zhì) 列表是Perl中的第二種數(shù)據(jù)結(jié)構(gòu),是一組標(biāo)量的有序集合。數(shù)組是存儲(chǔ)列表的容器,是一種可以存...
    櫻雨樓閱讀 1,162評(píng)論 0 0
  • 列表(list):標(biāo)量的有序集合。--數(shù)據(jù)數(shù)組(array):儲(chǔ)存列表的變量。--變量“標(biāo)量-標(biāo)量變量;列表-數(shù)組...
    Hannahhao閱讀 510評(píng)論 0 0
  • Perl里的列表和數(shù)組用于表示復(fù)數(shù)。列表是指有序集合,數(shù)組是存儲(chǔ)列表的變量。數(shù)組和列表里每個(gè)元素都是獨(dú)立互不相關(guān)的...
    食夢(mèng)貍貓閱讀 1,197評(píng)論 0 0
  • 列表一直是計(jì)算機(jī)的核心部分,因?yàn)橹坝杏?jì)算機(jī),在這段時(shí)間里,許多惡魔占據(jù)了他們的細(xì)節(jié)。 它們實(shí)際上是 Perl 6...
    焉知非魚(yú)閱讀 1,895評(píng)論 0 0
  • 數(shù)組的索引:從0開(kāi)始, #name + 1) -1 也表示數(shù)組的最后一個(gè)索引,所以 #name] == $name...
    sakam0to閱讀 186評(píng)論 0 0

友情鏈接更多精彩內(nèi)容