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

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なコードを書く上で非常に有用なテクニックです。ぜひ実際の開発でも活用してみてください。

  1. Pythonの例外処理入門:try・exceptの基本とよく使われる例外の種類

    Pythonで例外処理(エラーハンドリング)を行うには、まず「except」句を使って例外を捕捉する仕組みを理解する必要があります。Pythonでは、例外をキャッチするために「try」と「except」というキーワードが用意されています。tryブロック内のコードは文ごとに順番に実行されますが、途中で例外が発生すると、残りのtryブロックのコードは実行されず、代わりにexcept節が実行される仕組みです。基本的な構文try: some_statements_here except: exception_handlingシンプルな例まずは非常に簡単な例で構文を確認してみましょう。t

  2. Pythonで配列リスト内の0と1を分離する方法

    リスト内包表記(List Comprehension)はPythonで広く使われている人気のテクニックです。ここでは、この手法を活用して配列内の0と1を分離してみましょう。 まず、ユーザーから入力を受け取って配列を作成します。配列の要素は0と1がランダムな順序で含まれているものとします。そして、0を配列の左側へ、1を右側へと分離させます。 具体的には、配列を走査しながら要素を2つの異なるリストに振り分けます。片方のリストには0だけを、もう片方のリストには1だけを格納し、最後にその2つのリストを連結することで目的の結果を得られます。 実行例 入力: a=[0,1,1,0,0,1] 出力: [0