python

しょっちゅう忘れることを書いておく。

66

189 views

Python内包表記をマスターしよう!初心者向けシンプル解説

Pythonの「内包表記」(コンプリヘンション)は、リストや辞書を手軽に生成できる便利な書き方です。コードをシンプルかつ読みやすくできるので、効率よくデータ処理が行えます。この記事では、リスト、辞書、セットの内包表記の基本から実用例までを、初心者向けに分かりやすく紹介します!

内包表記とは?

内包表記(コンプリヘンション)は、リストや辞書を生成するための短い書き方です。例えば、リスト内包表記を使うと、以下のようにforループを一行で書けます。

# 1から10までの平方数リストを作成
squares = [x ** 2 for x in range(1, 11)]
print(squares)  # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

内包表記を使うメリット

  • コードがシンプルに: 内包表記を使うことで、処理が簡潔で見やすくなります。
  • パフォーマンス向上: 内包表記は通常のforループより高速に処理されます。

リスト内包表記

まずは、最もよく使われるリスト内包表記を見てみましょう。

基本構文

[式 for 変数 in イテラブル if 条件]

例1: 簡単なリストの生成

次のコードは、1から5までの数字を持つリストを生成します。

numbers = [x for x in range(1, 6)]
print(numbers)  # [1, 2, 3, 4, 5]

例2: 条件付きリストの生成

内包表記でif文を使うと、特定の条件を満たす要素だけを取り出すことができます。

# 偶数だけを取り出す
even_numbers = [x for x in range(1, 11) if x % 2 == 0]
print(even_numbers)  # [2, 4, 6, 8, 10]

辞書内包表記

リストと同じように、辞書も内包表記を使って生成できます。

基本構文

{キー: 値 for 変数 in イテラブル if 条件}

例1: リストを使って辞書を生成

以下のコードは、1から5までの数字をキー、平方数を値とする辞書を生成します。

squares_dict = {x: x ** 2 for x in range(1, 6)}
print(squares_dict)  # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}

例2: 条件付きの辞書生成

特定の条件を満たすキーと値のペアだけを辞書に追加することも可能です。

# 偶数だけをキーとする辞書
even_squares_dict = {x: x ** 2 for x in range(1, 11) if x % 2 == 0}
print(even_squares_dict)  # {2: 4, 4: 16, 6: 36, 8: 64, 10: 100}

セット内包表記

リストや辞書と同様に、セットも内包表記で生成できます。セットは重複しない要素を持つコレクションです。

基本構文

{式 for 変数 in イテラブル if 条件}

例: 重複を除いた平方数のセット

squares_set = {x ** 2 for x in range(1, 11)}
print(squares_set)  # {64, 1, 4, 36, 9, 16, 49, 81, 100, 25}

内包表記の応用例

1. ネストしたループの内包表記

内包表記はネストしたループにも使えます。例えば、2つのリストの要素を組み合わせたペアを生成する場合、次のように書けます。

# 2つのリストの要素を組み合わせたペア
pairs = [(x, y) for x in range(1, 4) for y in range(1, 4)]
print(pairs)  # [(1, 1), (1, 2), (1, 3), (2, 1), (2, 2), (2, 3), (3, 1), (3, 2), (3, 3)]

2. 多重条件を使った内包表記

複数の条件を追加して、さらに絞り込むことも可能です。

# 1から20のうち、偶数かつ3の倍数の数
filtered_numbers = [x for x in range(1, 21) if x % 2 == 0 and x % 3 == 0]
print(filtered_numbers)  # [6, 12, 18]

まとめ

内包表記を使うと、Pythonのコードがシンプルで効率的になります。慣れてくると、処理が一目で分かりやすくなり、コードの可読性も向上します。リスト、辞書、セットなどで幅広く使えるので、まずは自分のプロジェクトで試してみてくださいね!

Page 61 of 69.

前のページ 次のページ



[添付ファイル]


お問い合わせ

プロフィール

すぺぺぺ

自己紹介

本サイトの作成者。
プログラムは趣味と勉強を兼ねて、のんびり本サイトを作っています。
フレームワークはdjango。
ChatGPTで自動プログラム作成に取り組み中。

サイト/ブログ

https://www.osumoi-stdio.com/novel/

ツイッター

@darkimpact0626