« リスト(配列)を逆順に並べ替える (reverse) | メイン | 配列をコピーする »

カテゴリー:リスト(配列) 

配列の一部を置換する(splice)

このエントリーを含むはてなブックマーク  livedoorクリップ  配列の一部を置換する(splice)をdel.icio.usに追加  配列の一部を置換する(splice)をYahoo!ブックマークに追加  配列の一部を置換する(splice)をニフティクリップに追加

配列の一部だけを簡単に置換してくれる関数がspliceである。

spliceは非常に柔軟であるがために最初はかなりとっつきにくい。その反面、まとめて配列の操作をしたくなった際には心強い味方になってくれる。引数の数によって動作がかなり変わるのでその点をしっかりと押さえておきたい。

#!/usr/bin/perl

;#
;#spliceの練習
;#

#-----------------------------#
#削除
#-----------------------------#
@array = (1..5);
splice(@array, 3);      #$array[3] ~ $array[$#array]を削除

  #○実行結果
  #  @array => (1,2);


#-----------------------------#
#削除(指定箇所)
#-----------------------------#
@array = (1..5);
splice(@array, 1, 3);   #$array[1] ~ $array[3]を削除

  #○実行結果
  #  @array => (1,5);


#-----------------------------#
#置換(削除あり)
#-----------------------------#
@array = (1..5);
@list  = (a..c);
splice(@array, 1, 3, @list);   #$array[1] ~ $array[3]を削除し、
                                #$array[1]の部分から@listを入れる

  #○実行結果
  #  @array => (1,a,b,c,5);


#-----------------------------#
#置換(削除なし)
#-----------------------------#
@array = (1..5);
@list  = (a..c);
splice(@array, 1, 0, @list); #$array[1]の部分から@listを入れる

  #○実行結果
  #  @array => (1,a,b,c,2,3,4,5);


ちなみに以下に示す、左右の式はいずれも同じ意味を持つ。
push(@a,$x,$y)	        splice(@a,$#a+1,0,$x,$y)
pop(@a)                splice(@a,-1)
shift(@a)              splice(@a,0,1)
unshift(@a,$x,$y)      splice(@a,0,0,$x,$y)
$a[$x] = $y            splice(@a,$x,1,$y);
~perldocより引用~


トラックバック

このエントリーのトラックバックURL:
http://katsubemakito.net/mt/mt-tb.cgi/633

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

VPSレンタルサーバー




クリエイティブ・コモンズ・ライセンス
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.