Help us understand the problem. What is going on with this article?

Python基礎講座(10 内包表記)

More than 3 years have passed since last update.

内包表記

内包表記を使用するとリスト、セット、ディクショナリのデータ操作を短い行数で記述できます。
また処理速度も早くなるので、膨大な要素を持つ場合はこちらを使いましょう。

リスト内包表記

まずは以下のリスト内包表記を使用したプログラムを実行してください。

list_comprehension1.py
result = [x**2 for x in [1, 2, 3, 4, 5]]
print("{0}".format(result))

x**2は「xの2乗」を意味し、リストresultには以下の値が格納されます。

[1, 4, 9, 16, 25]

リスト内包表記を使用しない場合、上のプログラムは以下のように置き換えることが出来ます。

list_comprehension2.py
result = []
for i in [1, 2, 3, 4, 5]:
    result.append(i**2)
print("{0}".format(result))

[ 要素に入れる値(変数を使用) for 変数 in リスト ]

リストはプログラムのようにリスト型のデータを使用することも可能ですし、 range(1,6)のようにrange()も使用可能です。

リスト内包表記は、リストの要素内で処理する要素、処理しない要素を条件指定することができます。

list_comprehension3.py
print("{0}".format( [x*10+1 for x in range(1,6) if x > 2 and x < 5]))

出力結果は以下になります。

[31, 41]

リスト内包表記はリストを返すので、print文に直接リスト内包表記を与えることも当然可能です。
リスト内包表記を使用しない場合、上のプログラムは以下のように置き換えることが出来ます。

list_comprehension4.py
result = []
for x in range(1,6):
    if x > 2 and x < 5:
        result.append(x*10+1)
print("{0}".format(result))

[ 要素に入れる値(変数を使用) for 変数 in リスト 条件 ]

セット内包表記

内包表記はセットでも使用可能です。使用方法はリスト内包表記と同じです。

set_comprehension.py
print("{0}".format( {x*10+1 for x in range(1,6) if x > 2 and x < 5}))

出力結果は以下になります。
set([41, 31])

ディクショナリ(辞書)内包表記

キーと値を:で区切り、キー:バリューと{}で括るのは通常のディクショナリと同じです。
使用方法はリストと同じです。

dictionary_comprehension.py
print("{0}".format( {str(x):x**2 for x in range(1,6)}))

内包表記を使用しなくても同じ処理を行うことが出来ますが、シンプルで高速動作を実現できる
内包表記を意識して使用すると良いソースコードが出来上がります。

次: Python基礎講座(11 例外)

bltinc
広告・人材・D2Cと幅広い事業を展開するベンチャー企業 ・Blog : https://blog.bltinc.co.jp/
https://bltinc.co.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした