[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ループは、リストを奇数のみにします。

使用例

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

for i in nums:
    if i % 2 ==0:
        nums.remove(i)
        
print(nums)
出力:
[1, 3, 5, 7, 9]

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)
出力:
[1, 3, 5, 7, 9]

filter()

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

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

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

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

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

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

使用例

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

result = list(filter(lambda x: x % 2 != 0, nums))
        
print(result)
出力:
[1, 3, 5, 7, 9]

内包表記

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)
出力:
[1, 3, 5, 7, 9]

Numpy配列の場合

まず、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)
出力:
[1 3 5 7 9]

まとめ

リスト(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をコピーしました