Pythonでリストから偶数だけを抽出する方法(forループ・whileループ・filter()の使い方)
データ分析では、特定の条件を満たす値だけをリストから抽出(フィルタリング)する処理が必要になることがよくあります。本記事では、Pythonを使ってリストから偶数の値のみを取り出す方法を、複数のアプローチごとにわかりやすく解説します。
基本的な考え方はシンプルです。リストの各要素を順番に取り出し、2で割った余りを確認します。余りが0であればその要素は偶数と判断できます。こうして判定した偶数だけを集めて新しいリストを作成すれば、それがフィルタリング条件を適用した結果となります。
それでは、代表的な3つの実装方法を見ていきましょう。
1. forループを使う方法
最もシンプルで直感的なのが、forループを使う方法です。リストの要素を1つずつ読み込み、2で割り切れるかどうかを判定します。条件を満たした要素だけを、あらかじめ用意した空のリストに追加していきます。
コード例
list_A = [33, 35, 36, 39, 40, 42]
res = []
for n in list_A:
if n % 2 == 0:
res.append(n)
print(res)実行結果
[36, 40, 42]
元のリストの中から偶数である 36、40、42 のみが抽出され、新しいリストとして出力されます。
2. whileループを使う方法
リストの長さが事前にわからない場合や、インデックスを明示的に制御したい場合は、whileループと len() 関数を組み合わせることで、同じ処理を実現できます。
コード例
list_A = [33, 35, 36, 39, 40, 42]
res = []
n = 0
while (n < len(list_A)):
if list_A[n] % 2 == 0:
res.append(list_A[n])
n += 1
print(res)実行結果
[36, 40, 42]
変数 n をインデックスとして使い、リストの末尾に到達するまで各要素の偶奇を判定しています。結果はforループの場合と同じになります。
3. filter() 関数とlambdaを使う方法
よりPythonらしい書き方としては、lambda 式と filter() 関数を組み合わせる方法があります。lambda式で「2で割り切れる」という条件を定義し、その条件を filter() に渡すことで、元のリストから条件を満たす要素だけを効率的に取り出せます。
コード例
list_A = [33, 35, 36, 39, 40, 42] x = lambda m: m % 2 == 0 res = list(filter(x, list_A)) print(res)
実行結果
[36, 40, 42]
filter() はイテレータを返すため、list() で囲んでリスト化している点に注意してください。
まとめ
リストから偶数を抽出する方法として、以下の3つを紹介しました。
- forループ: 処理の流れが理解しやすく、初心者におすすめ
- whileループ: インデックス操作が必要な場面や、長さが不定のデータに有効
- filter() + lambda: コードが簡潔になり、Pythonらしい宣言的な書き方
どの方法でも同じ結果が得られますが、可読性やコード量を重視するなら filter() との組み合わせ、学習目的や柔軟な処理をしたい場合にはループ構文が適しています。状況に応じて使い分けるとよいでしょう。
-
キーと値のリストからPython辞書(dict)を作成する方法
キーリストと値リストから辞書を作成する Pythonでは、キーを格納したリスト(L1)と、それに対応する値を格納したリスト(L2)が別々に用意されている場合でも、いくつかの簡単な方法で1つの辞書オブジェクトにまとめることができます。 ここでは、代表的な2つの方法を紹介します。 方法1:zip()関数とdict()関数を組み合わせる 最もシンプルで一般的なのが、zip()で2つのリストをペア化し、dict()関数で辞書に変換する方法です。 >>> L1 = [a,b,c,d] >>> L2 = [1,2,3,4] >>> d = dict(
-
Pythonの辞書(ディクショナリ)からすべての値をリストとして取得する方法
Pythonの辞書に格納されたすべての値をリスト形式で取得したい場合、最もシンプルな方法は dict.values() メソッドを使うことです。このメソッドは辞書内のすべての値を返すため、list() 関数で囲むことで簡単にリストへ変換できます。values() メソッドを使った基本的な例my_dict = {name: TutorialsPoint, time: 15 years, location: India} value_list = list(my_dict.values()) print(value_list)出力結果上記のコードを実行すると、次のような出力が得られます。[Tuto