組み込み関数とラムダ関数の使用
ラムダ関数は、map()、filter()、sorted() などの Python の組み込み関数と組み合わせると、特に強力になります。これらの組み合わせにより、データ変換と操作のための効率的なコードを記述できます。
map() 関数とラムダ
map() 関数は、指定された関数をイテラブル(リストなど)の各項目に適用し、結果を含むマップオブジェクトを返します。
-
/home/labex/project ディレクトリに lambda_builtin.py という名前の新しいファイルを作成します。
-
map() をラムダと共に使用する例として、次のコードを追加します。
## map() とラムダ関数を使用して、リスト内の各数値を二乗する
numbers = [1, 2, 3, 4, 5]
squared_numbers = list(map(lambda x: x**2, numbers))
print("元の数値:", numbers)
print("二乗された数値:", squared_numbers)
- コードを実行します。
python3 ~/project/lambda_builtin.py
次のように表示されるはずです。
元の数値: [1, 2, 3, 4, 5]
二乗された数値: [1, 4, 9, 16, 25]
filter() 関数とラムダ
filter() 関数は、条件(関数が True を返す)を満たす要素を含む新しいイテラブルを作成します。
lambda_builtin.py ファイルに次のコードを追加します。
## filter() とラムダ関数を使用して、偶数を見つける
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print("すべての数値:", numbers)
print("偶数:", even_numbers)
## filter() を使用して、'J' で始まる名前を見つける
names = ["Alice", "Bob", "John", "Jane", "Michael", "Jessica"]
j_names = list(filter(lambda name: name.startswith('J'), names))
print("すべての名前:", names)
print("'J' で始まる名前:", j_names)
- 更新されたコードを実行します。
python3 ~/project/lambda_builtin.py
追加の出力が表示されるはずです。
すべての数値: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
偶数: [2, 4, 6, 8, 10]
すべての名前: ['Alice', 'Bob', 'John', 'Jane', 'Michael', 'Jessica']
'J' で始まる名前: ['John', 'Jane', 'Jessica']
sorted() 関数とラムダ
sorted() 関数を使用すると、カスタムキー関数を使用してイテラブルをソートできます。これは、ラムダ関数が非常に役立つ場所です。
lambda_builtin.py ファイルに次のコードを追加します。
## sorted() とラムダを使用して、タプルの 2 番目の要素でソートする
pairs = [(1, 5), (3, 2), (5, 7), (2, 9), (4, 1)]
sorted_by_second = sorted(pairs, key=lambda pair: pair[1])
print("元のペア:", pairs)
print("2 番目の要素でソート:", sorted_by_second)
## sorted() とラムダを使用して、文字列を長さでソートする
words = ["apple", "banana", "cherry", "date", "elderberry", "fig"]
sorted_by_length = sorted(words, key=lambda word: len(word))
print("元の単語:", words)
print("長さでソート:", sorted_by_length)
- 更新されたコードを実行します。
python3 ~/project/lambda_builtin.py
追加の出力が表示されるはずです。
元のペア: [(1, 5), (3, 2), (5, 7), (2, 9), (4, 1)]
2番目の要素でソート: [(4, 1), (3, 2), (1, 5), (5, 7), (2, 9)]
元の単語: ['apple', 'banana', 'cherry', 'date', 'elderberry', 'fig']
長さでソート: ['fig', 'date', 'apple', 'cherry', 'banana', 'elderberry']
複数のラムダ関数の組み合わせ
ラムダ関数を使用して、複数の操作をチェーンまたは組み合わせることもできます。
lambda_builtin.py ファイルに次のコードを追加します。
## map と filter をラムダ関数と組み合わせる
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
## まず数値を二乗し、次に 20 より大きい値をフィルタリングする
result = list(filter(lambda x: x > 20, map(lambda x: x**2, numbers)))
print("元の数値:", numbers)
print("二乗された数値 > 20:", result)
- 更新されたコードを実行します。
python3 ~/project/lambda_builtin.py
追加の出力が表示されるはずです。
元の数値: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
二乗された数値 > 20: [25, 36, 49, 64, 81, 100]
map()、filter()、sorted() などの組み込み関数とラムダ関数を組み合わせることで、最小限のコードでデータを処理するための強力な方法が提供されます。次のステップでは、ラムダ関数のより実用的なアプリケーションを探ります。