Pythonのラムダ式とfilter()関数を実例でわかりやすく解説
この記事では、Python 3.x(およびそれ以前のバージョン)におけるラムダ式と filter() 関数について学びます。どちらの機能もPythonの標準ライブラリに組み込まれており、追加のインポートなしですぐに利用できます。
ラムダ式とは?
ラムダ式を使うと、インライン関数(その場で定義する小さな関数)を簡潔に記述できます。ラムダ式は、キーワード lambda の後にカンマ区切りの引数リストと、それらの引数を使って評価される式を続けて記述します。
構文
lambda 引数: 式
戻り値: 引数を式に代入して計算された値が返されます。
ラムダ式には関数名を付けないため、「匿名関数(無名関数)」とも呼ばれます。通常の関数定義に必要な def キーワードを使わずに関数を宣言できるのが特徴です。処理が1行で済むような簡単な操作を渡したい場面で特に便利です。
filter() 関数とは?
Pythonが提供する filter() 関数は、関数とイテラブルオブジェクト(リストなど)を引数として受け取り、その関数が True を返す要素だけを抽出した結果を返します。
構文
filter(関数, <リスト型>)
戻り値の型: フィルタリングされた結果(filterオブジェクト)。list() で囲むことでリストとして取得できます。
それでは、実際のコード例を見ながら、具体的な実装方法を確認していきましょう。
実例1:特定の文字を除外する
コード例
inp_list = ['t','u','t','o','r','i','a','l'] result = list(filter(lambda x: x!='t' , inp_list)) print(result)
出力結果
['u', 'o', 'r', 'i', 'a', 'l']
解説
この例では、「t 以外の要素」という条件をラムダ式で指定し、リスト内から該当する要素だけがフィルタリングされています。条件に合わない「t」がすべて取り除かれ、新しいリストが生成されます。
実例2:偶数だけを抽出する
コード例
inp_list = [1,2,3,4,5,6,7,8,9,10] result = list(filter(lambda x: x%2==0 , inp_list)) print(result)
出力結果
[2, 4, 6, 8, 10]
解説
この例では、与えられたリストから偶数だけを抽出しています。「x % 2 == 0(2で割った余りが0)」という条件を満たす要素のみが残り、戻り値を list() で型変換することで、結果がリスト形式で表示されます。
まとめ
この記事では、Python 3.x(およびそれ以前のバージョン)におけるラムダ式と filter() 関数の実装方法を学びました。さらに、両者を組み合わせることで、目的の出力を効率的に得られることも確認しました。
ラムダ式と filter() 関数はセットで使われることが多く、簡潔なコードでデータを望みの形式にフィルタリングできるため、可読性の高いPythonicなコードを書く上で非常に有用なテクニックです。ぜひ実際の開発でも活用してみてください。
-
Pythonの例外処理入門:try・exceptの基本とよく使われる例外の種類
Pythonで例外処理(エラーハンドリング)を行うには、まず「except」句を使って例外を捕捉する仕組みを理解する必要があります。Pythonでは、例外をキャッチするために「try」と「except」というキーワードが用意されています。tryブロック内のコードは文ごとに順番に実行されますが、途中で例外が発生すると、残りのtryブロックのコードは実行されず、代わりにexcept節が実行される仕組みです。基本的な構文try: some_statements_here except: exception_handlingシンプルな例まずは非常に簡単な例で構文を確認してみましょう。t
-
Pythonで配列リスト内の0と1を分離する方法
リスト内包表記(List Comprehension)はPythonで広く使われている人気のテクニックです。ここでは、この手法を活用して配列内の0と1を分離してみましょう。 まず、ユーザーから入力を受け取って配列を作成します。配列の要素は0と1がランダムな順序で含まれているものとします。そして、0を配列の左側へ、1を右側へと分離させます。 具体的には、配列を走査しながら要素を2つの異なるリストに振り分けます。片方のリストには0だけを、もう片方のリストには1だけを格納し、最後にその2つのリストを連結することで目的の結果を得られます。 実行例 入力: a=[0,1,1,0,0,1] 出力: [0