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