[Python]配列を偶数だけにするには?

python

どうも、ちょげ(@chogetarou)です。

配列(array)を偶数だけにする方法を紹介します。

スポンサーリンク

リストの場合

インターフェース, インターネット, プログラム, ブラウザ, Www

リスト(List)を偶数のみにする方法は、4つあります。

for文 + remove()

1つ目は、for文とremove()を使う方法です。

まず、リスト(List)をforループします。

forループの処理でif文を呼び出し、要素を2で割った余りが0かどうか判定します。

要素を2で割った余りが0でない場合、引数に要素を指定したremove()メソッドを呼び出します。

#ls=対象のリスト
for i in ls:
    if i % 2 !=0:
        ls.remove(i)

上記のforループは、リストを偶数のみにします。

使用例

numbers = [1, 2, 3, 4, 5]

for i in numbers:
    if i % 2 !=0:
        numbers.remove(i)
    
print(numbers)
出力:
[2, 4]

for文 + append()

2つ目は、for文とappend()を使う方法です。

まず、新しい空のリストを用意します。

次に、対象のリストをforループします。

ループ処理で、if文で「ループ変数を2で割った値が0かどうか」を条件に分岐します。

そして、ループ変数を2で割った値が0の場合に、空のリストからappend()を呼び出します。

append()の引数にループ変数を指定します。

#ls=対象のリスト
result = []
for item in ls:
    if item % 2 == 0:
        result.append(item)

上記のforループは、対象のリストを偶数のみにした結果を用意したリストに格納します。

使用例

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

result = []
for item in nums:
    if item % 2 == 0:
        result.append(item)

print(result)
出力:
[2, 4, 6, 8, 10]

filter()

3つ目は、filter()を使う方法です。

まず、list()を呼び出し、list()の引数でfilter()を呼び出します。

filter()の第1引数に1つの引数を持つ関数、第2引数に対象のリストを指定します。

そして、関数で「引数 % 2 == 0」を返します。

#ls=対象のリスト
result = list(filter(lambda x: x % 2 == 0, ls))

上記のlist()は、偶数のみのリストを結果として取得します。

list()なしでfilter()のみを呼んだ場合、filter()はfilterオブジェクトを返します。

使用例

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

result = list(filter(lambda x: x % 2 == 0, nums))

print(result)
出力:
[2, 4, 6, 8, 10]

内包表記

4つ目は、内包表記を使う方法です。

まず、内包表記でリストをforループし、ループ変数を返します。

次に、if文で条件分岐します。

条件分岐の条件に、「ループ変数 % 2 == 0」を指定します。

#ls=対象のリスト
result = [x for x in ls if x % 2 == 0]

上記の内包表記は、リストを偶数のみにした結果を取得します。

使用例

nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

result = [x for x in nums if x % 2 == 0]

print(result)
出力:
[2, 4, 6, 8, 10]

Numpy配列の場合

Numpy配列(ndarray)を偶数のみにするには、[]と条件式を使います。

まず、Numpy配列名と[]を記述します。

そして、[]内に「Numpy配列 % 2 == 0」を指定します。

#arr=対象のNumpy配列
result = arr[arr % 2 == 0]

上記の「arr[arr % 2 == 0]」は、Numpy配列(ndarray)を偶数のみにした結果を取得します。

使用例

import numpy as np

nums = np.array([1, 2, 3, 4, 5, 6, 7, 8, 9, 10])

result = nums[nums % 2 == 0]

print(result)
出力:
[ 2  4  6  8 10]

まとめ

リスト(List)を偶数のみにする方法は、次の4つです。

  • for文とremove()を使う方法
  • for文とappend()を使う方法
  • filter()を使う方法
    result = list(filter(lambda x: x % 2 == 0, ls))
  • 内包表記を使う方法
    result = [x for x in ls if x % 2 == 0]

Numpy配列(ndarray)を偶数だけにするには、[]と条件式を使います。

#arr=対象のNumpy配列
result = arr[arr % 2 == 0]

コメント

タイトルとURLをコピーしました