「perl陣列比對」的推薦目錄:
- 關於perl陣列比對 在 コバにゃんチャンネル Youtube 的最佳貼文
- 關於perl陣列比對 在 大象中醫 Youtube 的精選貼文
- 關於perl陣列比對 在 大象中醫 Youtube 的最讚貼文
- 關於perl陣列比對 在 Re: [問題] 如何快速判斷某元素是否存在陣列中- 看板Perl 的評價
- 關於perl陣列比對 在 Chapter 3 - Map、Array、和Slice | the-little-go-book 的評價
- 關於perl陣列比對 在 cccount/tests/sample.md at master 的評價
- 關於perl陣列比對 在 How can I compare arrays in Perl? 的評價
perl陣列比對 在 大象中醫 Youtube 的精選貼文
perl陣列比對 在 大象中醫 Youtube 的最讚貼文
perl陣列比對 在 Chapter 3 - Map、Array、和Slice | the-little-go-book 的推薦與評價
其實 append 是比較特別的,如果底層的陣列已經滿了, append 會創造一個更大的陣列,並且複製所有的值到新的陣列(這也是動態陣列的工作原理,像是:PHP、Python ... ... <看更多>
perl陣列比對 在 cccount/tests/sample.md at master 的推薦與評價
要注意的是,PHP 和Perl/C 一樣,陣列的元素都是由0開始。 enumeric array 與 ... 對陣列的key 做排序的工作,陣列元素的比對採用使用者自定的cmp_function 函數。 ... <看更多>
perl陣列比對 在 Re: [問題] 如何快速判斷某元素是否存在陣列中- 看板Perl 的推薦與評價
※ 引述《jeffreychen ()》之銘言:
: 各位大大~請教如何判對元素是存在陣列中~比較短的表示法~
自己的一些心得 因為最近也在做大量陣列的判斷 就我知道大概有三個方法
1.直接用for迴圈判斷
這是最簡單 也是最慢的 大概是這樣
for $a (@a){
print "exist" if $b == $a
}
2. 使用智慧比對運算符號
這是最簡單也是在節省記憶體空間時最有效率的方法 使用時請記得呼叫5.10模組
use 5.010
print "exist" if $b ~~ @a
3. 使用hash(雜湊)搜尋
這是最快的 但也是會號記憶體的方法
$a{$_} = 1 for (@a)
print "exist" if $a{$b}
接下來就是自己實際使用的情況 目前我在進行一抽系統抽樣程式
但是碰到的問題就是 抽過的樣本不能再抽
但因為樣本紀錄ID是用一個很長串的字串 所以perl的工作就是要比對這非常長的字串
我的經驗是 相同大小的樣本 如果使用hash做搜尋會很快 而且樣本越大效果越明顯
但很快記憶體就會不夠
如果記憶體不夠的情況下 善用智慧型比對算符會是最好的選擇
以下是我測試的code和結果
use 5.010 ;
@a = (1..999999) ;
$b = "a" ;
$t = time() ;
for (1..9999999){
$b ~~ @a
}
say time()-$t ;
$a{$_} = 1 for @a ;
$t = time() ;
for (1..9999999){
$a{$b} ;
}
say time()-$t ;
## out put ###
53
0
所以結論是:
如果記憶體夠 請用hash 如果不用才使用智慧比對算符
至於方法1 當作練習題就好 除非你真的不在意程式效能
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 223.142.85.210
... <看更多>