配列(リスト)の全要素をまとめて操作。(C#、Java、JavaScript、PHP、Python3、Ruby比較)

 文字列を特定の文字で区切って配列(リスト)に入れる処理は、標準入力などで頻繁に使います。ここで、この配列(リスト)の要素を文字列でなく数値として扱う場合は、全要素を数値型に変換する必要があります。

 このような場合は、for文などで要素を1個づつ取り出して個別に数値化していく方法もありますが、全要素を一括して数値型に変換することも可能です。

 今回は配列(リスト)の全要素をまとめて数値型に変換したり、同じ計算をするといった、配列(リスト)の一括操作を扱います。配列(リスト)の全要素を一括で操作する場合は、mapメソッド(C#の場合はSelectメソッド)を使用します。

 文字列が要素となっている配列[“1″,”2″,”4″,”8″,”16″,”32″,”64″,”128”]の全要素を数値(整数)型に変換し、さらに全要素を2倍する操作を行い、操作後の全要素を出力する処理について、C#、Java、JavaScript、PHP、Python3、Rubyの6言語で書いてみました。

C#
using System;
using System.Linq;
using System.Collections.Generic;

public class Sample{
    //配列の全要素をカンマ区切りで出力。
    public static void listOutput(List<int> box){
        int idx = 0;

        foreach (int x in box){
            Console.Write(x);
            if (idx < box.Count-1){
                Console.Write(", ");
            } else {
                Console.WriteLine();
            }
            idx += 1;
        }
    }

    public static void Main(){
        //配列をリスト型に変換。
        List<string> testList = new List<string>{"1","2","4","8","16","32","64","128"};

        //リストの全要素を整数化し、さらに全要素を2倍する。
        List<int> nlist = new List<int>(testList.Select(x1 => int.Parse(x1)).Select(x2 => x2 * 2));

        //リストの内容を出力。
        listOutput(nlist);
    }
}

 全要素を一括して操作可能にするために、配列をリスト型に変換します。

 リスト型に変換したら、Selectメソッドで要素を一括操作します。最初のSelectで整数型に変換し、2回目のSelectで全要素を2倍にします。

 全要素の一括操作処理が済んだらリストnListに格納し、nListの内容をカンマ区切りで出力します。

Java
import java.util.*;

public class Main {
    public static void main(String[] args) throws Exception {
        //配列をリスト型に変換。
        List<String> testList = Arrays.asList("1","2","4","8","16","32","64","128");

        //リストの全要素を整数化し、さらに全要素を2倍する。
        var list = new ArrayList<Integer>();
        testList.stream().map(x1 -> Integer.parseInt(x1)).map(x2 -> x2 * 2).forEach(y -> list.add(y));

        //リストの内容を出力。
        System.out.println(list);
    }
}

 全要素を一括して操作可能にするために、配列をリスト型に変換します。

 リストの全要素一括操作は、stream()とmapの2つのメソッドを組み合わせて行います。操作を済ませたデータを格納するリストも用意しておきます。

 リストにstream()を付け、その次のmapで全要素を一括して整数型に変換、2番目のmapで全要素を2倍にする操作を行います。そして、最後のforEachで、格納用リストlistに操作を済ませた全要素を格納します。

 操作済のデータが入ったリストlistを、System.out.printlnで出力します。

JavaScript
var testArr = ["1","2","4","8","16","32","64","128"];

//配列の全要素を整数型に変換し、さらに全要素を2倍する。
var arr = testArr.map(x1 => parseInt(x1)).map(x2 => x2 * 2);

//配列の内容を出力。
console.log(arr);

 配列にmapメソッドを付けることで、全要素を操作します。最初のmapで整数型に変換し、次のmapで全要素を2倍にします。

 配列の一括操作が済んだら配列arrに格納し、配列arrの内容をconsole.logで出力。

PHP
<?php
$testArr = ["1","2","4","8","16","32","64","128"];

//配列の全要素を整数型に変換し、さらに全要素を2倍する。
$arr = array_map(function($x2){
   return $x2 * 2;
}, array_map(function($x1){
    return (int)$x1;
} ,$testArr));

//配列の内容を出力。
print_r($arr);
?>

 配列の全要素の一括操作は、array_map(関数, 配列)を使用。

 第1引数に整数型に変換する処理、第2引数に配列を入れて、全要素を一括して整数型に変換する処理を行います。さらに、この処理を第2引数に、数値を2倍する処理を第1引数に入れたarray_mapで、配列の全要素を一括して2倍にする操作を行います。

 配列の全要素の一括操作を済ませたら配列$arrに格納し、print_rで配列$arrの内容を出力します。

Python3
testList = ["1","2","4","8","16","32","64","128"]

#リストの全要素を整数型に変換し、さらに全要素を2倍する。
nList = list(map(lambda x: x*2, map(int, testList)))

#リストの内容を出力
print(nList)

 リストの全要素操作は、map(関数, リスト)を使います。

 map(int, リスト)で全要素を整数型に変換し、その処理を第2引数に入れたmapで全要素を2倍します。全要素を2倍にする処理は、lambda x: x * 2を第1引数に入れることで実行できます。

 リストの全要素操作が済んだらlistでリスト形式に戻して、リストnListに格納。printでリストnListの内容を出力します。

Ruby
testArr = ["1","2","4","8","16","32","64","128"]

#配列の全要素を整数型に変換し、さらに全要素を2倍する。
arr = testArr.map(&:to_i).map{|x| x * 2}

#配列の内容を出力。
p arr

 配列にmapメソッドを付けて、全要素を操作。最初のmapで整数型に変換、2回目のmapで全要素を2倍します。

 要素の操作が済んだら、配列arrに格納。pメソッドで配列arrの内容を出力します。

にほんブログ村 ゲームブログへ

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする