Python
 Computer >> コンピューター >  >> プログラミング >> Python

【Python入門】リストから奇数を取り出して出力する3つの方法

本記事では、リストに含まれる奇数を出力するPythonプログラムの書き方について、3つの異なるアプローチを交えながら詳しく解説します。

問題定義

リスト形式のイテラブル(反復可能オブジェクト)が入力として与えられたとき、その中に含まれる奇数だけを抽出して表示するプログラムを作成します。

ここでは、以下の3つの方法を使ってこの問題を解いていきます。

  • 拡張forループを使う方法
  • lambda式とfilter関数を使う方法
  • リスト内包表記を使う方法

方法1:拡張forループを使用する

最も基本的な方法は、forループでリストの各要素を順番に取り出し、剰余演算子%を使って2で割った余りが0以外(つまり奇数)かどうかを判定することです。

コード例

list1 = [11, 23, 45, 23, 64, 22, 11, 24]

# ループで各要素を反復処理
for num in list1:
    # 奇数かどうかを判定
    if num % 2 != 0:
        print(num, end=" ")

実行結果

11 23 45 23 11

num % 2 != 0は、数値を2で割った余りが1である場合(=奇数の場合)にTrueを返します。end=" "を指定することで、改行せずにスペース区切りで出力できます。

方法2:lambda式とfilter関数を使用する

filter()関数とlambda式(無名関数)を組み合わせると、より簡潔に奇数を抽出できます。条件を満たす要素だけをまとめて取得したい場合に便利です。

コード例

list1 = [11, 23, 45, 23, 64, 22, 11, 24]

# lambda式で奇数を判定し、filterで抽出
odd_no = list(filter(lambda x: (x % 2 != 0), list1))
print("リスト内の奇数:", odd_no)

実行結果

リスト内の奇数: [11, 23, 45, 23, 11]

filter(条件関数, イテラブル)の形で呼び出すことで、条件を満たす要素のみを含む新しいリストが生成されます。

方法3:リスト内包表記を使用する

Pythonらしさが最も際立つのがリスト内包表記です。ループ処理と条件分岐を1行で表現でき、可読性と実行効率の両面で優れています。

コード例

list1 = [11, 23, 45, 23, 64, 22, 11, 24]

# リスト内包表記で奇数を抽出
odd_nos = [num for num in list1 if num % 2 != 0]
print("奇数:", odd_nos)

実行結果

奇数: [11, 23, 45, 23, 11]

[num for num in list1 if num % 2 != 0]という構文により、「list1の各要素numのうち、num % 2 != 0を満たすものだけ」を新しいリストとして作成しています。

まとめ

本記事では、入力として与えられたリストからすべての奇数を抽出する3つの方法を紹介しました。

  • 拡張forループ:初心者にもわかりやすい基本の書き方
  • lambda+filter:関数型スタイルで簡潔に記述できる
  • リスト内包表記:最もPythonicで高速・可読性も高い

用途や好みに応じて使い分けることで、より効率的なPythonプログラミングが可能になります。ぜひ実際にコードを動かしてみてください。

  1. 指定した範囲内のすべての素数を出力するPythonプログラム

    この記事では、以下の問題文に対する解決方法について学んでいきます。 問題文 ある区間が与えられたとき、その範囲内に含まれるすべての素数を求めて出力する必要があります。 ここでは、素数の基本的な定義に基づいた全探索(ブルートフォース)によるアプローチを紹介します。素数とは、「1とその数自身のみを約数として持ち、それ以外の数を約数に持たない自然数」のことです。 この定義に基づき、各数値が素数の条件を満たしているかどうかを判定し、条件が真(True)と評価されるたびに出力処理を行います。 それでは、実際の実装例を見ていきましょう。 実装例 start = 1 end = 37 for val in

  2. Pythonでリストを出力する方法|インデックスの基本から実践的な出力テクニックまで

    Pythonのリストとは? Pythonのリスト(list)は、複数の要素をひとつにまとめて管理できるデータ型です。リスト内の各要素は順序を持って格納されており、それぞれの位置(インデックス)を指定することで、任意の要素にアクセスできます。 インデックスは0から始まる リストのインデックスは0から始まる点に注意が必要です。つまり、最初の要素が list[0]、2番目の要素が list[1]、3番目の要素が list[2] に対応します。 例えば、以下のようなリストを考えてみましょう。 numbers = [10, 20, 50, 40] print(numbers[2]) # 出力結果:5