作者CindyLinz (Cindy Wang)
看板Perl
標題Re: [請益] 如何移除Array中一個的任一個row
時間Wed Jan 7 22:06:46 2015
※ 引述《josefy (醉落~最弱)》之銘言:
: 各位版大好, 小弟最近遇到個問題
: 我有個array
: @items=([a,1],[b,2],[c,3],[d,4]);
: 但是我想要移除掉第n個row
: ex, n=1 @items應該會變為:
: @itmes=([a,1],[c,3],[d,4]);
: 我試過用 splice但是對一維的array可以, 二維以上好像不能用
: splice @itmes,1,1;
: 請問該怎麼做 ? 謝謝!
Perl 的 array 實際上都是一維的.
只是我們有時候在這一個一維 array 裡面存放的是一排 array 的 reference
所以可以用起來像是二維 array 的效果.
如果想要把
@items = ([a,1],[b,2],[c,3],[d,4])
變成
@items = ([a,1],[c,3],[d,4])
的話, 用:
splice @items, 1, 1
沒有錯;
如果想變成
@items = ([a],[b],[c],[d])
的話, 就... 實際上是一一進每一個 ref 到的 array 裡面操作, 用:
for (@items) {
splice @$_, 1, 1;
# 較新版本的話 (perl >= 5.14) 也可以用下面這個
# splice $_, 1, 1;
}
這個是你指的.. 二維以上嗎? @_@"
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 112.121.80.249
※ 文章網址: http://webptt.com/m.aspx?n=bbs/Perl/M.1420639609.A.8E2.html
1F:推 josefy: 沒錯, 但我用splice @items, 1,1; 真的不行 Or2 01/07 22:08
2F:→ josefy: 不知道為什麼 囧> 01/07 22:08
3F:→ CindyLinz: 我猜要額外看其他部分的程式碼了.. 問題可能不在這行@@ 01/07 22:10
4F:推 josefy: ok, 瞭解! 01/07 22:15