配列(リスト)の要素の中から、特定の条件を満たした要素だけを取り出したい。例えば、奇数だけ、もしくは、偶数だけを取り出すなど。
配列から特定の条件を満たす要素を取り出す場合、for文とif文を組み合わせる方法がありますが、専用の組み込みメソッドに条件式を記入して取り出す方法もあります。C#はWhere、Java、JavaScript、Python3はfilterメソッド、PHPはarray_filterメソッド、Rubyはselectメソッドを使用します。
今回は数値型配列(リスト)の中から、偶数だけを取り出して出力する処理について、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<int> testList = new List<int>{1,2,3,4,5,6,7,8,9,10};
//リストから偶数の要素だけを取り出して、別のリストに格納。
List<int> nlist = new List<int>(testList.Where(x => x % 2 == 0));
listOutput(nlist);
}
}
要素を取り出す操作が可能なように、配列をリスト型に変換しておきます。
Whereメソッドを使うことで、条件に合った要素だけを取り出せます。
Whereの()内にx => x % 2 == 0を記入することで、偶数の要素だけを取り出します。取り出した要素は、新しいリストnListに格納。
取り出した要素をnListに格納したら、nListの内容をカンマ区切りで出力します。
Java
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
//配列をリスト型に変換。
List<Integer> testList = Arrays.asList(1,2,3,4,5,6,7,8,9,10);
//偶数の要素だけを取り出して、別のリストに格納。
var nList = new ArrayList<Integer>();
testList.stream().filter(x -> x % 2 == 0).forEach(x -> nList.add(x));
//リストの内容を出力。
System.out.println(nList);
}
}
要素を取り出す操作が可能なように、配列をリスト型に変換しておきます。
filterメソッドを使うことで、条件に合った要素だけを取り出せます。filterの()内にx -> x % 2 == 0を記入することで、偶数の要素だけを取り出します。取り出した要素は、新しいリストnListに格納。
取り出した要素をnListに格納したら、System.out.printlnでnListの内容を出力します。
JavaScript
process.stdin.resume();
process.stdin.setEncoding('utf8');
var testArr = [1,2,3,4,5,6,7,8,9,10];
//偶数の要素だけを取り出して、別の配列に格納。
var array = testArr.filter(x => x % 2 == 0);
//配列の内容を出力。
console.log(array);
配列にfilterメソッドを付けることで、条件を満たす要素を取り出せます。filterの()内の条件式に x % 2 == 0を記入し、偶数の要素だけを取り出します。
配列の一括操作が済んだら配列arrayに格納し、配列arrayの内容をconsole.logで出力。
PHP
<?php
$testArray = [1,2,3,4,5,6,7,8,9,10];
//偶数の要素だけを取り出し、別の配列に格納。
$array = array_values(array_filter($testArray, function($x){
return $x % 2 == 0;
}));
//配列の内容を出力
print_r($array)
?>
条件を満たす要素の取り出しは、array_filterメソッドを使用します。第1引数に配列、第2引数に条件式を含む関数を入れるので、array_mapとは逆になってます。
第2引数の関数の条件式に$x % 2 == 0を入れることで、第1引数の配列から偶数の要素だけを取り出せます。array_valuesメソッドで添字を連番に振りなおしてから、新しい配列$arrayに格納します。
偶数だけ取り出して$arrに格納したら、print_rで$arrayの内容を出力。
Python3
testArray = [1,2,3,4,5,6,7,8,9,10]
nList = []
#偶数の要素だけを取り出して出力。
nList = list(filter(lambda x: x % 2 == 0, testArray))
print(nList)
リストの全要素操作は、filter(関数, リスト)を使います。
filterの第1引数にlambda x: x % 2 == 0、第2引数にリストを入れることで、リストから偶数の要素だけを取り出せます。
要素を取り出したら、listでリスト型に戻してnListに格納。printでリストnListの内容を出力します。
Ruby
testArray = [1,2,3,4,5,6,7,8,9,10]
#偶数の要素だけを取り出して出力。
array = testArray.select{|x| x % 2 == 0}
p array
条件を満たす要素の取り出しは、selectメソッドを使います。C#のselectメソッドは、要素の一括操作でしたが、Rubyのselectメソッドは、条件を満たす要素の取り出しになってます。
selectの()に|x| x % 2 == 0を記入することで、偶数の要素だけを取り出せます。取り出した要素は、新しい配列のarrayに格納。
取り出した要素をarrに書くのしたら、pメソッドでarrayの内容を出力。