作者bxorw (每天保持微笑)
看板Perl
標題[問題] 問一個陣列刪除值的問題
時間Sat May 16 21:12:02 2009
這個問題有爬過版...但經由版上的方法卻發現,有error,讓我百思不得其解。
首先從版上得知若要刪除陣列中指定位置的值,可以利用splice的功能。
不過使用這個功能遇到一個問題:
我有一個陣列@a經過第一次條件處理後...
我在處理的過程中紀錄了"被處理過的位置"在@b
接著我這麼作...
foreach $num_cd(@b)
{
splice(@a,$num_cd,1);
}
但我卻發現...刪除的竟然不是我紀錄的位置=.=,這是為什麼?感謝<_ _>
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 122.146.203.213
1F:推 LiloHuang:應該是你刪除之後 所紀錄的位置也相對的都改變了 05/17 01:53
2F:推 LiloHuang:等到下一次要做 splice 時 已經不是正確要刪除的位置 05/17 01:54
3F:→ frank1983:可以從靠近尾端的 element 開始刪起 05/17 05:02
4F:→ frank1983:splice @a, $_, 1 for sort { $b <=> $a } @b; 05/17 05:03
5F:推 jackieku:也可以用unshift和push組合...遇到需要刪掉的index就跳過 05/17 20:21
6F:→ jackieku:push,依照不同情況效能可能會比較好(但也可能比較差) 05/17 20:21
7F:→ jackieku:對不起...上面說錯...是shift不是unshift 05/17 20:22