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

【初心者向け】Pythonのlambda式とfilter関数でリストから偶数を抽出する方法

このチュートリアルでは、Pythonにおけるlambda(ラムダ)式filter(フィルター)関数の実用的な使用例を紹介します。まずは、それぞれの基本的な仕組みから確認していきましょう。

lambda式とは

lambda式は、簡単な関数を簡潔に記述するための構文です。たとえば「リストの中から偶数だけを取り出したい」といった処理も、lambda式を使えば短いコードで効率よく実装できます。

lambda式にまだ慣れていない方は、先に基礎チュートリアルで学習しておくと理解がスムーズになります。

filter(func, iter)関数とは

filter(func, iter)は、2つの引数を受け取る組み込み関数です。第1引数に関数、第2引数にイテラブル(繰り返し可能なオブジェクト)を渡します。戻り値はfilterオブジェクトで、これをイテレータやリストに変換して利用します。結果として得られるイテレータには、関数内の処理によってTrueを返した要素のみが含まれます。

filter関数の詳細については、公式ドキュメントや基礎チュートリアルを参考にしてください。

ポイントは、filter関数の第1引数としてlambda式を直接渡せることです。それでは、リストから偶数だけを抽出する具体例を見てみましょう。

期待する入力と出力

Input:
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
Output:
[2, 4, 6, 8, 10]

この結果を得るために、以下の手順で進めていきます。

アルゴリズム

1. 数値のリストを初期化する。
2. 偶数を判定するlambda式を作成し、イテラブルと一緒にfilter関数へ渡す。
3. filterオブジェクトをイテレータ(リスト)に変換する。
4. 結果を出力する。

それでは、実際のコードを見てみましょう。

コード例

## リストを初期化
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

## filter関数の中にlambda式を記述
## 各要素がlambda式に渡され、条件を満たせばTrueが返される
## filter関数はTrueとなった値をすべてfilterオブジェクトに格納する
## filterオブジェクトをイテレータに変換すると、Trueだった値のみが取り出せる
result = filter(lambda x: x % 2 == 0, nums)

## リストに変換して結果を出力
print(list(result))

実行結果

上記のプログラムを実行すると、次のような出力が得られます。

[2, 4, 6, 8, 10]

まとめ

このように、lambda式とfilter関数を組み合わせることで、条件に合致する要素をわずか1行で抽出できます。同じ処理はリスト内包表記でも実現できるので、コードの可読性や用途に応じて使い分けるのがおすすめです。

本チュートリアルについてご不明な点があれば、コメント欄でお気軽にお問い合わせください。

  1. Pythonのtimeitモジュールとは?コード実行時間の計測方法を実例付きで徹底解説

    Pythonには、コードの実行時間を計測するためのさまざまな方法が用意されています。そのひとつが、標準ライブラリのtimeモジュールを使い、プログラムの実行前後の時刻を記録して差分を求めるというアプローチです。Pythonのtimeitモジュールとはプログラムが動作している間、バックグラウンドでは多くのプロセスが同時に稼働しており、コードが実行可能な状態を維持しています。しかし、timeモジュールではこれらのバックグラウンド処理にかかる時間は考慮されません。より正確なパフォーマンス計測が必要な場合は、timeitモジュールを使用するのが最適です。timeitモジュールは、対象のコードをデフォル

  2. Pythonのmap関数とラムダ式で文字を入れ替える方法

    map関数とラムダ式による文字の置き換えPythonでは、ある文字 a1 を別の文字 a2 に、そして a2 を a1 に相互に入れ替えたい場面があります。例えば、次のような入力文字列があったとします。puporials toinpこの文字列に含まれる「p」と「t」を入れ替えると、最終的に次のような結果を得たいわけです。tutorials pointこのような処理を実現するには、map関数とラムダ式(lambda)を組み合わせるのが便利です。map関数とラムダ式の仕組みmap(lambda, input) 関数は、渡されたイテラブル(反復可能なオブジェクト)の各要素に対して順番にラムダ式を適用