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

リスト内の偶数を出力するPythonプログラム|3つの実装方法を解説

本記事では、リスト(イテラブル)に含まれる偶数だけを抽出して出力するPythonプログラムの解決策とアプローチについて学びます。初心者にもわかりやすいよう、3つの異なる手法をコード例とともに紹介します。

問題の定義

リスト型のイテラブルが与えられたとき、その中に含まれるすべての偶数を出力することが求められます。

偶数かどうかの判定は、数値を2で割った余り(剰余)が0になるかどうかで確認できます。Pythonでは % 演算子を使うことで簡単に判定可能です。

ここでは、以下の3つのアプローチについて順番に見ていきましょう。

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

最も基本的な方法は、forループでリストの各要素を順番に取り出し、条件分岐で偶数のみを出力するやり方です。処理の流れが直感的で、Pythonを学び始めたばかりの方にもおすすめです。

サンプルコード

list1 = [11,23,45,23,64,22,11,24]
# 繰り返し処理
for num in list1:
    # 偶数かどうかをチェック
    if num % 2 == 0:
        print(num, end = " ")

実行結果

64 22 24

方法2:filter関数とラムダ式を使用する

filter() 関数とラムダ式(無名関数)を組み合わせると、より簡潔に偶数を抽出できます。関数型プログラミング的な書き方で、コードの行数を抑えたい場合に便利です。

サンプルコード

list1 = [11,23,45,23,64,22,11,24]
# ラムダ式でフィルタリング
even_no = list(filter(lambda x: (x % 2 == 0), list1))
print("リスト内の偶数: ", even_no)

実行結果

リスト内の偶数 : [64, 22, 24]

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

リスト内包表記を使えば、1行のコードで新しいリストとして偶数を取得できます。Pythonらしい簡潔な書き方として広く使われており、可読性も高いため実務でも人気のある手法です。

サンプルコード

list1 = [11,23,45,23,64,22,11,24]
# リスト内包表記
even_nos = [num for num in list1 if num % 2 == 0]
print("偶数 : ", even_nos)

実行結果

偶数 : [64, 22, 24]

まとめ

本記事では、入力されたリストから偶数を出力するための3つのアプローチ(forループ、filter+ラムダ式、リスト内包表記)を紹介しました。

  • forループ: 処理の流れがわかりやすく、初心者向け
  • filter+ラムダ式: 関数型的で簡潔な記述が可能
  • リスト内包表記: Pythonicな書き方で、結果をリストとして直接取得できる

用途や可読性の要件に応じて、最適な方法を選択してください。いずれの方法でも同じ結果が得られるため、状況に合わせて使い分けるのが良いでしょう。

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

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

  2. 文字列の中から偶数の長さの単語を出力するPythonプログラム

    本記事では、与えられた問題を解決するための考え方と実装方法について解説します。Pythonの基本的な文字列操作を組み合わせることで、初心者の方でも簡単に実装できる内容となっています。 問題文 文字列が与えられたとき、その中に含まれる単語のうち、文字数が偶数であるものをすべて画面に表示するプログラムを作成します。 例えば、「tutorial point」という文字列が入力された場合、「tutorial」は8文字(偶数)なので出力され、「point」は5文字(奇数)なので出力されません。 解決のアプローチ この問題は、以下の手順で解決できます。 split()関数を使って、入力文字列を空白区切り