Python 3におけるリスト内包表記とラムダ式の基本
リスト内包表記(list comprehension)とラムダ式はPythonでデータを処理する際に非常に有用です。リスト内包表記はリストを生成するコンパクトな方法を提供し、ラムダ式(無名関数)は小規模な関数を一行で記述することを可能にします。これらを組み合わせることで、コードの可読性と効率性を高めることができます。
リスト内包表記の基本
リスト内包表記は、既存のリストから新しいリストを生成するための簡潔な方法です。基本的な形式は [式 for アイテム in イテラブル]
です。ここで「式」は新しいリストの要素を定義し、「アイテム」はイテラブル(リストやタプルなど)から取り出される各要素を指します。
ラムダ式の基本
ラムダ式は無名関数を定義するための短い構文です。形式は lambda 引数: 式
となります。これを利用することで、関数を簡潔に記述し、他の関数の引数として直接使用できます。
リスト内包表記とラムダ式の組み合わせ例
リスト内包表記とラムダ式を組み合わせることで、特定の条件に基づいてリストの要素を効率的にフィルタリングすることができます。以下に具体的な例を示します。
例1: 偶数のみを抽出
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] even_numbers = [x for x in numbers if (lambda x: x % 2 == 0)(x)] print(even_numbers) # 出力: [2, 4, 6, 8, 10]
例2: 特定の文字を含む単語の抽出
words = ["apple", "banana", "cherry", "date"] words_with_a = [word for word in words if (lambda word: 'a' in word)(word)] print(words_with_a) # 出力: ['apple', 'banana', 'date']
例3: 5より大きい数値の抽出
numbers = [3, 5, 7, 10, 12] filtered_numbers = [n for n in numbers if (lambda n: n > 5)(n)] print(filtered_numbers) # 出力: [7, 10, 12]
これらの例では、ラムダ式をリスト内包表記の条件部分に埋め込むことで、特定のフィルタ条件に従ってリストの要素を抽出しています。この方法は、条件が複雑でない限り、非常に読みやすく効率的なコードを書くことが可能です。