亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Perl > 正文

Perl List::Util模塊使用實例

2020-10-31 14:51:27
字體:
來源:轉載
供稿:網友

在Perl中有一些專門用于處理列表數據的模塊,比如說List::Util模塊,該模塊包含在標準庫中,能提供各種高效的常見列表處理工具。因其用C語言來實現,速度一般都挺快!

【例01】掃描符合條件的某個列表,并取出第一個符合條件的
常規做法:

復制代碼 代碼如下:

use 5.010; 
my @names  = qw(Wendy Jerry Betty Wendy Alice); 
foreach  (@names) { 
    if (//bWendy/b/i) { 
        $match = $_; 
        last; 
    } 

say $match;     

如果改用List::Util模塊提供的first子程序,就要簡單的多
復制代碼 代碼如下:

use List::Util qw(first); 
my $match = first {//bWendy/b/i} @names;  #找到第一個Wendy即終止 
如果換成數字的話,比如要求

【例02】求1到1000之間的和
常規做法:
復制代碼 代碼如下:

use 5.010; 
my $total = 0; 
foreach (1..1000) { 
    $total += $_; 

say $total;               #結果500500 

如果改用List::Util模塊提供的sum子程序,同樣很簡單:
復制代碼 代碼如下:

use List::Util qw(sum); 
my $total = sum(1..1000); #結果500500 

【例03】求一組數字的最大值與最小值.
常規做法:
復制代碼 代碼如下:

#! /usr/bin/perl;   
use utf8;   
   
sub max {   
   my($max_so_far) = shift @_; #數組中第一個值,暫時當成最大值。   
   foreach(@_){                #遍歷數組@_   
   if($_>$max_so_far){         #看其它元素是否有比$max_so_far大的值。   
    $max_so_far = $_;}         #如果有話,更新最大值變量   
   }   
   $max_so_far;   
}   
   
my $_MaxData = &max(2,3,8,5,10);   
print $_MaxData;               #結果為10 

如果改用List::Util模塊提供的max子程序,則非常簡單:
復制代碼 代碼如下:

use List::Util qw(max); 
my $max = max(2, 3, 8, 5, 10); 
print $max;                 #結果為10 

同樣道理,使用List::Util模塊提供的min子程序,可求最小值:
復制代碼 代碼如下:

use List::Util qw(min); 
my $min = min(2, 3, 8, 5, 10);  #最小值為2 

【例04】對一組字符串進行排序
如果用常規方法的話,必須按順序一個個進行比較,用List::Util的maxstr子程序可以輕松實現:
復制代碼 代碼如下:

use List::Util qw(maxstr); 
my  $max_str = maxstr( qw/Jerry Betty Alice Fred Barney jerry/ ); 
print $max_str; 

【例05】對列表中的元素隨機排序
如果用常規方法的話,很難實現,而用List::Util中的shuffle子程序,則非常簡單,一條命令搞定!
復制代碼 代碼如下:

use List::Util qw(shuffle); 
my @shuffled_nums = shuffle(1..10);   # 3 9 8 5 6 4 1 10 2 7                 
my @shuffled_name = shuffle('A'..'G');# F E G A B D  

【例06】檢查列表中是否沒有某個元素,或者有任何元素,或者所有元素都符合條件。支持類似grep語法
如果用常規方法的話,很難實現,而用List::MoreUtils同樣很容易實現,代碼如下:
復制代碼 代碼如下:

use List::MoreUtils qw(none any all); 
my @numbers = qw(7 4 1 3 78); 
if (none {$_ > 100} @numbers) {print "No elements over 100/n"; }  
elsif (any {$_ > 50}@numbers) {print "Some elements over 50/n";} 
elsif (all {$_ <10} @numbers) {print "All elements < 10/n";} 
NOTE: List::MoreUtils非自帶的模塊,需要下載.

【例07】同時處理多個姓名列表,每次取出2位
復制代碼 代碼如下:

use List::MoreUtils qw(natatime);  
my @names_1 = qw(Alice Bob Carly); 
my @names_2 = qw(David Edward Foo); 
my $names   = natatime(2, @names_1, @names_2);  #natatim (N at a time:同時處理N組)有多個列表的話往里面放就好了 
while (my @name = $names->()) {                 #遍歷,方便后面輸出 
    print "Got @name/n"; 

#輸出結果 
Got Alice Bob 
Got Carly David 
Got Edward Foo 

【例08】合并多個列表為一個列表

復制代碼 代碼如下:

use List::MoreUtils qw(mesh); 
my @array_1 = 'A' .. 'D'; 
my @array_2 = 1 .. 4; 
my @array_3 = qw( jerry alice wendy ); 
my @array_new = mesh(@array_1, @array_2, @array_3); 
print @array_new; 
#輸出結果: 
A=>1=>jerry=> B=>2=>alice=> C=>3=>wendy=> D=>4

第1次: 第一個列表中取A,第二個列表中取出1,第三個列表中取出jerry
第2次: 第一個列表中取B, 第二個列表中取出2,第三個列表中取出alice
......
依次類推!
【例09】往指定的字符串中加字符
可以用List::MoreUtils中的insert_after子程序

復制代碼 代碼如下:

use v5.10; 
use List::MoreUtils qw(:all); 
 
my @list = qw/This is a list/; 
insert_after {$_ eq 'a'} "longer" => @list; 
print @list;  #This is a longer list

【例10】對兩個列表進行操作,第一個列表平方后,和第二個列表求和
可以用List::MoreUtils中的pairwise子程序
復制代碼 代碼如下:

use v5.10; 
use List::MoreUtils qw(:all); 
 
@m = (1..4); 
@n = (100..103); 
@x = pairwise { ($a*$a) + $b } @m, @n;  #101 105 111 119 

【總結】
如果上面的方式用普通的方法實現,需要多次循環遍歷,很麻煩,而將復雜的算法,數據結構用C來實現并封裝在List模塊中,則可以實現很多看似復雜的功能,從中也可以看出Perl的強大之處在于CPAN,有眾多的模塊支撐!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美另类99xxxxx| 精品一区精品二区| 国产精品高潮呻吟久久av野狼| 国产日韩精品入口| 欧美综合在线第二页| 国产精品久久久久国产a级| 成人在线视频福利| 亚洲情综合五月天| 欧洲成人性视频| 国产日本欧美一区二区三区在线| 欧美日韩国产999| zzijzzij亚洲日本成熟少妇| 亚洲免费av网址| 欧美在线视频免费观看| 国产精品成人播放| 热99精品里视频精品| 日本韩国欧美精品大片卡二| 亚洲国产成人av在线| 久久免费高清视频| 色偷偷噜噜噜亚洲男人的天堂| 国产91热爆ts人妖在线| 亚洲韩国欧洲国产日产av| 亚洲国产另类 国产精品国产免费| 久久亚洲私人国产精品va| 欧美激情videos| 久久久999国产| 国产日韩专区在线| 亚洲一级片在线看| 亚洲的天堂在线中文字幕| 欧美午夜影院在线视频| 国产欧美一区二区三区在线看| 亚洲性日韩精品一区二区| 亚洲性日韩精品一区二区| 国产成一区二区| 一区二区三区黄色| 最近2019好看的中文字幕免费| 欧美极品少妇xxxxx| 81精品国产乱码久久久久久| 久久久www成人免费精品张筱雨| 日本成人黄色片| 日韩视频免费在线| 日本亚洲欧洲色α| 欧美巨乳美女视频| 国产精品小说在线| 亚洲国产成人爱av在线播放| 青草青草久热精品视频在线网站| 精品久久久久久久久国产字幕| 国内精品美女av在线播放| 国产精品劲爆视频| 亚洲一区二区三区sesese| 欧洲亚洲妇女av| 国产精品91久久| 高清一区二区三区日本久| 日韩国产在线播放| 91精品国产91久久久久久吃药| 欧美日韩免费区域视频在线观看| 日韩精品免费综合视频在线播放| 国产精品丝袜视频| 欧美自拍大量在线观看| 在线观看国产成人av片| 亚洲字幕在线观看| 成人在线激情视频| 国产成人一区三区| 国产成人精品一区二区| 成人高清视频观看www| 日本精品免费一区二区三区| 亚洲综合自拍一区| 亚洲成人a级网| 亚洲高清久久久久久| 欧美老少配视频| 色婷婷久久一区二区| 97精品伊人久久久大香线蕉| 精品久久香蕉国产线看观看亚洲| 日韩黄色在线免费观看| 亚洲人成电影在线观看天堂色| 亚洲美女福利视频网站| 亚洲精品久久久久久下一站| 国产精品欧美日韩久久| 欧美猛少妇色xxxxx| 国产精品美女无圣光视频| 久久亚洲精品成人| 中文字幕免费国产精品| 日韩一区二区三区在线播放| 国产精品久久精品| 欧美www在线| 日韩精品在线免费| 精品国产一区二区三区在线观看| 成人性生交大片免费观看嘿嘿视频| 97视频在线观看亚洲| 中文字幕一区电影| 狠狠躁夜夜躁久久躁别揉| 欧美日韩视频免费播放| 日韩国产欧美精品一区二区三区| 日韩电影免费观看中文字幕| 亚洲第一福利网站| 91av视频在线播放| 国产精品白丝av嫩草影院| 午夜精品一区二区三区在线| 久久精品国产亚洲一区二区| 国产精品久久久久aaaa九色| 欧美性xxxx极品hd欧美风情| 久久免费国产精品1| 亚洲风情亚aⅴ在线发布| 国产精品国产三级国产专播精品人| 亚洲美腿欧美激情另类| 欧美巨猛xxxx猛交黑人97人| 久久久欧美一区二区| 国产精品亚洲激情| 国产亚洲一区二区在线| 国产91精品久久久久久久| 亚洲最大av网| 日韩精品在线播放| 国产一区二区三区在线观看网站| 国产97免费视| 中文字幕国产亚洲2019| 日韩精品亚洲元码| 欧美性猛交xxxx黑人猛交| 亚洲色图第一页| 日韩中文字幕网址| 97视频在线观看网址| 欧美性videos高清精品| 欧美自拍大量在线观看| 欧美大片免费观看在线观看网站推荐| 欧美大片免费观看| 午夜精品一区二区三区在线播放| 韩国美女主播一区| 日本久久中文字幕| 热99精品里视频精品| 亚洲最大福利网站| zzijzzij亚洲日本成熟少妇| 亚洲成色777777在线观看影院| 亚洲欧美日韩一区二区三区在线| 久久精品视频播放| 国内精品久久久| 久久久久久亚洲| 日韩av在线高清| 一区二区三区四区在线观看视频| 亚洲最新av网址| 色yeye香蕉凹凸一区二区av| 亚洲一区二区久久久久久| 韩国日本不卡在线| 中文字幕在线看视频国产欧美在线看完整| 欧美视频专区一二在线观看| 欧美一级大胆视频| 亚洲美女性视频| 精品国产鲁一鲁一区二区张丽| 国产精品一区二区三区在线播放| 中文字幕日韩综合av| 欧美精品在线免费播放| 国外日韩电影在线观看| 88xx成人精品| 91高清视频在线免费观看| 亚洲精品国偷自产在线99热| 亚洲一二三在线| 色偷偷噜噜噜亚洲男人的天堂| 亚洲欧美一区二区三区久久| 日韩精品在线观看视频| 欧美高清视频一区二区| 精品少妇v888av| 国产欧美一区二区三区在线| 国产精品嫩草视频| 日韩在线观看免费全| 亚洲成人精品视频在线观看| 中文字幕亚洲一区在线观看|