Pythonのリスト内包表記は、コンパクトで効率的なコードを書くための強力な手段です。以下に、いくつかのニッチな使い方を具体的なコード例とともに紹介します。

1. 条件付きリスト内包表記

# 偶数のみを含むリストを作成
even_numbers = [x for x in range(10) if x % 2 == 0]
print(even_numbers)
# 出力: [0, 2, 4, 6, 8]

# 文字列のリストから特定の文字数以上の要素を抽出
words = ["apple", "banana", "cherry", "date"]
filtered_words = [word for word in words if len(word) >= 6]
print(filtered_words)
# 出力: ['banana', 'cherry']

# 条件に合致する要素に対して演算を行い新しいリストを作成
squares = [x**2 if x % 2 == 0 else x for x in range(5)]
print(squares)
# 出力: [0, 1, 4, 3, 16]

2. 複数のリストからの要素の生成

# 2つのリストの要素の組み合わせを作成
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
combined_list = [(x, y) for x in list1 for y in list2]
print(combined_list)
# 出力: [(1, 'a'), (1, 'b'), (1, 'c'), (2, 'a'), (2, 'b'), (2, 'c'), (3, 'a'), (3, 'b'), (3, 'c')]

# 条件を満たす組み合わせのみを生成
filtered_combined_list = [(x, y) for x in list1 for y in list2 if x != y]
print(filtered_combined_list)
# 出力: [(1, 'b'), (1, 'c'), (2, 'a'), (2, 'c'), (3, 'a'), (3, 'b')]

3. 辞書の生成

# 辞書のキーと値を逆にした新しい辞書を生成
original_dict = {'a': 1, 'b': 2, 'c': 3}
flipped_dict = {value: key for key, value in original_dict.items()}
print(flipped_dict)
# 出力: {1: 'a', 2: 'b', 3: 'c'}

# 条件を満たす要素だけを含む辞書を生成
filtered_dict = {key: value for key, value in original_dict.items() if value % 2 != 0}
print(filtered_dict)
# 出力: {'a': 1, 'c': 3}

リスト内包表記はこれらの例に見られるように、コードを簡潔かつ効率的にするために幅広く利用できます。これらの使い方をマスターすることで、Pythonコードの可読性を向上させ、同時に処理速度を向上させることができます。

投稿者 admin

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です