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 行の内包表記に置き換えることで、コードを簡素化し、読みやすくすることができます。リスト内包表記の使用を練習して、その構文と機能に慣れてください。