Pythonのリスト内包表記は、短いコードでリストを作成できる便利な機能です。以下では、より応用的な例をいくつか紹介します。
条件によるフィルタリング
リスト内包表記を使用すると、条件に一致する要素だけをフィルタリングできます。たとえば、以下のように、与えられたリストから偶数だけを取り出すことができます。
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
even_numbers = [x for x in numbers if x % 2 == 0]
print(even_numbers) # [2, 4, 6, 8, 10]
同様に、以下のように、与えられたリストから特定の文字列を含む要素だけを取り出すことができます。
words = ['apple', 'banana', 'cherry', 'date', 'elderberry']
fruits = [x for x in words if 'berry' in x]
print(fruits) # ['strawberry', 'blueberry']
複数のリストの組み合わせ
リスト内包表記を使用すると、複数のリストの組み合わせによって新しいリストを作成できます。たとえば、以下のように、2つのリストの要素を組み合わせてタプルのリストを作成することができます。
colors = ['red', 'green', 'blue']
sizes = ['S', 'M', 'L']
items = [(color, size) for color in colors for size in sizes]
print(items) # [('red', 'S'), ('red', 'M'), ('red', 'L'), ('green', 'S'), ('green', 'M'), ('green', 'L'), ('blue', 'S'), ('blue', 'M'), ('blue', 'L')]
同様に、以下のように、3つのリストの要素を組み合わせて辞書のリストを作成することができます。
names = ['Alice', 'Bob', 'Charlie']
ages = [25, 30, 35]
genders = ['F', 'M', 'M']
people = [{'name': name, 'age': age, 'gender': gender} for name in names for age in ages for gender in genders]
print(people)
辞書のキーと値を反転する
リスト内包表記を使用すると、辞書のキーと値を簡単に反転することができます。たとえば、以下のように、与えられた辞書のキーと値を反転した新しい辞書を作成することができます。
original_dict =
{'apple': 1, 'banana': 2, 'cherry': 3, 'date': 4, 'elderberry': 5}
inverted_dict = {value: key for key, value in original_dict.items()}
print(inverted_dict) # {1: 'apple', 2: 'banana', 3: 'cherry', 4: 'date', 5: 'elderberry'}
## リスト内包表記の入れ子
リスト内包表記は入れ子にすることができます。たとえば、以下のように、2次元配列を作成することができます。
```python
rows = 3
cols = 4
matrix = [[0 for j in range(cols)] for i in range(rows)]
print(matrix)
同様に、以下のように、2つのリストの要素の積をすべて計算したリストを作成することができます。
list1 = [1, 2, 3]
list2 = [10, 20, 30]
product_list = [x * y for x in list1 for y in list2]
print(product_list) # [10, 20, 30, 20, 40, 60, 30, 60, 90]
以上、Pythonにおけるリスト内包表記の応用例をいくつか紹介しました。