国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術(shù)及教程分享平臺!
分類導(dǎo)航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務(wù)器之家 - 腳本之家 - perl - 7個perl數(shù)組高級操作技巧分享

7個perl數(shù)組高級操作技巧分享

2020-06-20 11:09perl教程網(wǎng) perl

這篇文章主要介紹了7個perl數(shù)組高級操作技巧,本文講解了數(shù)組去重、數(shù)組合并、查找最大值、列表歸并等內(nèi)容,需要的朋友可以參考下

1、去除一個數(shù)組中的重復(fù)元素:

使用grep函數(shù)代碼片段:
代碼:

復(fù)制代碼 代碼如下:

my @array = ( 'a', 'b', 'c', 'a', 'd', 1, 2, 5, 1, 5 );
my %count;
my @uniq_times = grep { ++$count{ $_ } < 2; } @array;

 

使用轉(zhuǎn)換hash代碼片段:
代碼:

復(fù)制代碼 代碼如下:

my @array = ( 'a', 'b', 'c', 'a', 'd', 1, 2, 5, 1, 5 );
my %saw;
@saw{ @array } = ( );
my @uniq_array = sort keys %saw;

 

2、合并兩個array:

 

復(fù)制代碼 代碼如下:

push @array1, @array2;

 

3、快速查找最大值,不知道的程序猿們,這樣搞:

 

復(fù)制代碼 代碼如下:

my @nums = 0 .. 1000;
my $max = $nums[0];
foreach (@nums) {
$max = $_ if $_ > $max;
}


知道的這樣搞:

復(fù)制代碼 代碼如下:

use List::Util qw(max);
my $max_num = max( 0 .. 1000 );


知道的他們還這樣搞:

復(fù)制代碼 代碼如下:

use List::Util qw(maxstr);
my $max_str = maxstr ( qw( Fido Spot Rover ) );


字符串比較玩弄于掌中。還有sum:

復(fù)制代碼 代碼如下:

use List::Util qw(sum);
my $sum = sum ( 1 .. 1000 );

 

4、列表歸并

數(shù)字求和,也可以用List::Util中的reduce:

復(fù)制代碼 代碼如下:

use List::Util qw(reduce);
my $sum = reduce { $a + $b } 1 .. 1000;


與sort類似,reduce也是用code block作為參數(shù),不過運(yùn)行機(jī)制稍微不同。每次迭代,先從參數(shù)列表取出前面兩個元素,分別設(shè)置為別名$a和$b,這樣參數(shù)列表的長度就會縮短為兩個元素。然后reduce把語句塊返回的計(jì)算結(jié)果再壓回到參數(shù)列表的頭部。如此往復(fù),直到最后列表里只剩下一個元素,也就是迭代的計(jì)算結(jié)果$sum。

 

好了,可以這樣了:

復(fù)制代碼 代碼如下:

my $product = reduce { $a * $b } 1 .. 1000;

 

5、判斷是否有元素匹配

純粹用Perl實(shí)現(xiàn),找到列表中第一個符合某條件的元素,比找出所有符合條件的要麻煩一些。下面的例子,判斷是否有大于1000的元素:

復(fù)制代碼 代碼如下:

my $found_a_match = grep { $_ > 1000 } @list;


注意:如果@list有一億個元素,而要找的就是1001?grep仍然還會循環(huán)一億次,當(dāng)然你可以向下面自己控制下:

復(fù)制代碼 代碼如下:

my $found_a_match = 0;
foreach my $elem (@list) {
$found_a_match = $elem if $elem > 1000;
last if $found_a_match;
}


還是那句話,不簡單~~~List::Util有現(xiàn)成的東西:

復(fù)制代碼 代碼如下:

use List::Util qw(first);
my $found_a_match = fist { $_ > 1000 } @list;


在List::MoreUtils模塊中,也提供很多的實(shí)用函數(shù):

復(fù)制代碼 代碼如下:

my $found_a_match = any { $_ > 1000 } @list;
my $all_greater = all { $_ > 1000 } @list;
my $none_greater = none { $_ > 1000 } @list;
my $all_greater = notall { $_ % 2 } @list;

 

6、一次遍歷多個列表

一般我們同時遍歷多個業(yè)務(wù)相關(guān)的列表時,往往用數(shù)組下標(biāo)遍歷:

復(fù)制代碼 代碼如下:


my @a = ( ... );
my @b = ( ... );
my @c;

 

foreach my $i ( 0 .. $#list ) {
my ( $a, $b ) = ( $a[$i], $b[$i] );
push @c, $a + $b;
}


看下面這個,你的感覺是?

復(fù)制代碼 代碼如下:

use List::MoreUtils qw(pairwise);
my @c = pairwise { $a + $b } @a, @b;


pairwise只適合兩個列表的同步計(jì)算,三個后用each_array:

復(fù)制代碼 代碼如下:


use List::MoreUtils qw(each_array);

 

my $ea = each_array( @a, @b, @c );

my @d;
while ( my ( $a, $b, $c ) = $ea->() ) {
push @d, $a+$b+$c;
}


雖然還是有點(diǎn)煩,不過也還好了。

 

7、數(shù)組合并

合并多個數(shù)組的操作當(dāng)然你可以自己寫,但終究不如MoreUtils的mesh方便:

復(fù)制代碼 代碼如下:


use List::MoreUtils qw(mesh);

 

my @odds = qw/ 1 3 5 7 9/;
my @evens= qw/ 2 4 6 8 0/;

my @nums = mesh @odds, @evens; # print: 1 2 3 4 ...

 

延伸 · 閱讀

精彩推薦
  • perlperl pop push shift unshift實(shí)例介紹

    perl pop push shift unshift實(shí)例介紹

    perl的pop跟push操作數(shù)組的最右邊,shift跟unshift操作數(shù)組的最左邊 ...

    腳本之家4612020-06-10
  • perlPerl使用nginx FastCGI環(huán)境做WEB開發(fā)實(shí)例

    Perl使用nginx FastCGI環(huán)境做WEB開發(fā)實(shí)例

    這篇文章主要介紹了Perl使用nginx FastCGI環(huán)境做WEB開發(fā)實(shí)例,實(shí)現(xiàn)了路由系統(tǒng)和模板系統(tǒng),需要的朋友可以參考下...

    Perl教程網(wǎng)2412020-06-18
  • perlperl常見問題集合之二

    perl常見問題集合之二

    哪些平臺上有 Perl?要到哪里去找? Perl的標(biāo)準(zhǔn)發(fā)行版(由 perl 發(fā)展小組負(fù)責(zé)維護(hù))僅以原始碼形式發(fā)行。您可在 http: //www.perl.com/CPAN/src/latest.tar.gz處取得。這個檔...

    腳本之家2102020-05-29
  • perlperl use vars pragma使用技巧

    perl use vars pragma使用技巧

    perl 中的vars是perl中的一個pragma(預(yù)編譯指示符),專門用來預(yù)定義全局變量,這些預(yù)定義后的全局變量在qw()列表中,在整個引用perl文件中皆可使用,即便使...

    perl教程網(wǎng)6812020-06-16
  • perlPerl List::Util模塊使用實(shí)例

    Perl List::Util模塊使用實(shí)例

    這篇文章主要介紹了Perl List::Util模塊使用實(shí)例,本文給出掃描符合條件的某個列表并取出第一個符合條件的、求1到1000之間的和 、求一組數(shù)字的最大值與最小...

    腳本之家4712020-06-22
  • perlPerl從文件中讀取字符串的兩種實(shí)現(xiàn)方法

    Perl從文件中讀取字符串的兩種實(shí)現(xiàn)方法

    有時候我們需要從文件中讀取字符串,這里簡單介紹下, 需要的朋友可以參考下 ...

    腳本之家6252020-06-08
  • perlperl命令行參數(shù)內(nèi)建數(shù)組@ARGV淺析

    perl命令行參數(shù)內(nèi)建數(shù)組@ARGV淺析

    這篇文章主要介紹了perl命令行參數(shù)內(nèi)建數(shù)組@ARGV淺析,本文重點(diǎn)在于講解@ARGV的用法,并通過實(shí)例來說明,需要的朋友可以參考下 ...

    perl教程網(wǎng)6162020-06-18
  • perlPerl的經(jīng)典用法分享

    Perl的經(jīng)典用法分享

    Perl的經(jīng)典用法分享,學(xué)習(xí)perl的朋友可以參考下 ...

    腳本之家6562020-06-06
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品国产成人国产三级 | 日韩在线视频一区 | 亚洲精品综合中文字幕 | 一区二区三区在线免费播放 | 日本女人高潮视频 | 免费看黄色一级电影 | 日本色综合 | 国产真实乱全部视频 | 国产亚洲精品久久久久久久久 | 欧洲国产一区 | 日韩欧美在线一区二区 | 黄色免费美女网站 | 欧美一区二区小视频 | 天天干狠狠操 | 免费av电影网站 | 国产欧美日韩综合精品一区二区 | 成人免费视频网站在线观看 | 亚洲国产人午在线一二区 | 狠狠操网站 | 在线国产日韩 | 国产精品久久天天躁 | 中文一区 | 一区二区视频在线 | 一区二区视频在线观看 | 日本一级毛片免费看 | 97精品国产一区二区三区 | 韩日精品一区 | 国产福利电影在线观看 | 国产精品免费久久久久久久久 | 激情小网站 | 蜜桃视频一区二区三区 | 国产特黄一级 | 51ⅴ精品国产91久久久久久 | 亚洲毛片在线 | 日韩视频在线免费播放 | 欧美大黄大色一级毛片 | 国产免费久久 | 99精品欧美一区二区三区综合在线 | 久久精品亚洲精品国产欧美kt∨ | 久久99国产精一区二区三区 | 久久国产精品无码网站 |