Python のリスト内包表記を例を使って説明する

リスト内包表記は、Python でリストを作成するための簡潔な方法を提供します。従来のループを使用するよりも読みやすく、多くの場合より効率的です。この記事では、リスト内包表記とは何か、どのように機能するか、そしてその使用例を説明します。

リスト内包表記とは何ですか?

リスト内包表記は、コレクション内の要素のすべてまたは一部を処理し、結果のリストを返すコンパクトな方法です。リスト内包表記の構文は次のとおりです。

[expression for item in iterable if condition]

ここで、expression は反復処理の現在の項目ですが、結果でもあるため、リスト項目のようになってしまう前に操作することができます。iterable はループするコレクションであり、condition は条件を満たす項目のみを含むオプションのフィルターです。

基本的な例

正方形のリストを作成する

0 から 9 までの数字の平方のリストを作成するには、次のようにリストの内包表記を使用できます。

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
squares = [x ** 2 for x in numbers]
print(squares)

出力:

[0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

アイテムのフィルタリング

条件を追加して項目をフィルタリングすることもできます。たとえば、リストから偶数だけを取得するには、次のようにします。

even_squares = [x ** 2 for x in numbers if x % 2 == 0]
print(even_squares)

出力:

[0, 4, 16, 36, 64]

リストのリストをフラット化する

リストのリストがあり、それをフラット化したい場合は、リストの内包表記を使用できます。

list_of_lists = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flattened = [item for sublist in list_of_lists for item in sublist]
print(flattened)

出力:

[1, 2, 3, 4, 5, 6, 7, 8, 9]

高度な例

関数の適用

リストの理解内で関数を適用できます。たとえば、文字列のリストを大文字に変換するには、次のようにします。

words = ['hello', 'world', 'python']
uppercase_words = [word.upper() for word in words]
print(uppercase_words)

出力:

['HELLO', 'WORLD', 'PYTHON']

ネストされた内包表記

リストの内包表記はネストできます。たとえば、i と j が両方とも 2 つのリストの要素であるタプル (i, j) のリストを作成するには、次のようにします。

list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
pairs = [(i, j) for i in list1 for j in list2]
print(pairs)

出力:

[(1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b'), (2, 'c'), (3, 'a'), (3, 'b'), (3, 'c')]

結論

リスト内包表記は、Python でリストを生成するための強力で簡潔な方法を提供します。複数行のループ コードを 1 行の内包表記に置き換えることで、コードを簡素化し、読みやすくすることができます。リスト内包表記の使用を練習して、その構文と機能に慣れてください。