- ベストアンサー
配列データの並び替えについて
- Perl初心者のhirokeiさんが配列データの並び替えについて質問しています。
- 具体的には、配列の要素を自由に入れ替えたり抜き取ったりする方法について知りたいとのことです。
- hirokeiさんはすでに試した方法がありますが、一部うまく動かないとのことです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
配列の並び替えは、配列スライスを使って (10,20,30,40,50,60,70,80,90,100) ↓ (10,20,40,50,60,70,80,30,90,100) なら @test = (10,20,30,40,50,60,70,80,90,100); @test[2..7] = @test[3..7, 2]; print join(',', @test)."\n"; のように表現できます。 また自由な並び替えは、ハッシュを使って データに重みをつけて、 sort でやる方法はどうでしょう。 %test = ( 10 => 9, 20 => 1, 30 => 3, 40 => 4, 50 => 5, 60 => 2, 70 => 6, 80 => 7, 90 => 8 ); @test = sort { $test{$a} <=> $test{$b} } keys %test; print join(',', @test);
その他の回答 (1)
- pica_zip
- ベストアンサー率67% (19/28)
補足です。 スライスでやると 以下のように配列の順番の情報を別に持っておいて 並び替えられます。 -- @info = (9,8,7,6,5,4,3,2,1,0); # 配列の順番の情報 @test = (10,20,30,40,50,60,70,80,90,100); @test = @test[@info]; print join('\n',@test);
お礼
丁寧に補足まで頂きありがとうございます、また一つ視野が広がりました、配列のスライスでチャレンジしてみようと思います、またご質問するかと思いますがそのときはよろしくお願いいたします。 hirokei
お礼
ご回答誠にありがとうございます、配列のスライス を使用すると出来そうとは思っていたのですが、そのように書けばよかったのですね、ハッシュでの方法も書いていただき、ありがとうございます。 スライスの方でチャレンジしてみようと思います、またわからない事がありましたら質問したいと思っております、そのときはまたよろしくお願いいたします。 ご回答 ありがとうございました。 hirokei