はじめに
こんにちは!
今回も、備忘録を兼ねて。
プログラミングをしていると、もっと効率的にコードを書きたくなることがあります。
Pythonのリスト内包表記は、そんなときに役に立つテクニックです。
forループを使った処理を、より短く読みやすく記述することができます。
それでは、基本から見ていきましょう。
リスト内包表記の基本
リスト内包表記は、新しいリストを作成 するための簡潔な方法です。
基本的な構文は以下の通りです。
[式 for 変数 in イテラブルオブジェクト]
- 式: 各要素に対して適用する式
- 変数: イテラブルオブジェクトの各要素を格納する変数
- イテラブルオブジェクト: リストやタプルなど、要素を順番に取り出せるオブジェクト
簡単な例を見てみましょう。
# 1から10までの数のリストを作成
numbers = [i for i in range(1, 11)]
print(numbers) # 出力: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 文字列のリストから、各文字列の先頭を大文字にした新しいリストを作成
words = ["apple", "banana", "cherry"]
capitalized_words = [word.capitalize() for word in words]
print(capitalized_words) # 出力: ['Apple', 'Banana', 'Cherry']
条件式を使ったリスト内包表記
リスト内包表記では、if文を使って要素を抽出したり、条件に応じて処理を分岐させたりすることができます。
条件に合う要素のみを抽出
# 偶数のみを抽出
even_numbers = [i for i in range(1, 11) if i % 2 == 0]
print(even_numbers) # 出力: [2, 4, 6, 8, 10]
条件に応じて異なる処理を実行
# 偶数なら2倍、奇数なら3倍
numbers = [i * 2 if i % 2 == 0 else i * 3 for i in range(1, 6)]
print(numbers) # 出力: [3, 4, 9, 8, 15]
ネスト構造を使ったリスト内包表記
リスト内包表記はネストさせることも可能です。
例えば、二次元リストを作成する場合などに便利です。
# 二次元リストを作成
matrix = [[i * j for j in range(1, 4)] for i in range(1, 4)]
print(matrix)
# 出力: [[1, 2, 3], [2, 4, 6], [3, 6, 9]]
リスト内包表記のメリット
簡潔なコード
forループに比べて、リスト内包表記を使うことでコードを簡潔に書くことができます。
処理の効率性
リスト内包表記は、forループに比べ、処理速度が速い場合があります。
まとめ
今回は、Pythonのリスト内包表記について、基本から解説しました。
リスト内包表記を使いこなすことで、より簡潔で効率的なコードを書くことができます。
みなさんも一緒に頑張りましょう!