Chatpter.1 - 内包表記とは
内包表記とは
-
これまでも何回かちらりほらりと見てきました、あの括弧内に とか とかを一行で書ききるあの書き方です。
nums = [i*2 for i in range(10)] # ← これ print(nums)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
n = 10 print('偶数' if n % 2 == 0 else '奇数') # ← これ
偶数
括弧
()
[]
{}
で囲まれた中でなら内包表記が使えます。
※ () 内の要素が1つの時のみ () が省略できます。
例)result = '偶数' if n % 2 == 0 else '奇数'内包表記は『Pythonらしい』と言われる見た目の文法です。
内包表記で書くメリットがあります。
- データの作成速度が超速
- [ ] の中でデータの作成処理をするので.append()が不要な分、高速です。
- 書き方が決まっているので、慣れれば読みやすい
- 誰が書いてもほぼ同じ書き方になるので、
上手下手がほとんどありません。
デメリットもあります。
- 書き慣れるまでが大変
- 文法をしっかり理解していないと、内包表記を書いてるだけで時間がかかってしまいます。
- 変数に代入できない
- 内包表記は、法則に従って一気にデータを作成していきます。その為、変数を作成して値を代入するというよそ見ができません。猪突猛進型です。
※ 全く無理というわけではないのですが・・・。 - 使いどころがむずかしい
- 1行で書けて可読性の向上が期待できても、使いどころを誤ると逆に可読性が低下します。
例えば文は長文になりがちで、従来どおりの書き方のほうが見やすいことがあります。
それを内包表記で無理して書くと、横に長~~~~~くなってしまい、 とても読みにくくなってしまいます。
その許容の判断が見る人によるので見極めが難しいです。 しかし初めは勉強なのでどんどん使って早く慣れましょう!
※ 用法・用量を守って正しく使用してください。
次に文で、一般の書き方と内包表記とを比べてみます。
一般
nums = [] for i in range(10): nums.append(i * 2) print(nums)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
内包表記
nums = [i*2 for i in range(10)] print(nums)
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
見様見真似で内包表記に挑戦してみよう!
文も、比べてみます。
一般
n = 10 if n % 2 == 0: print('偶数') else: print('奇数')
偶数
内包表記
n = 10 print('偶数' if n % 2 == 0 else '奇数')
偶数
見様見真似で内包表記に挑戦してみよう!
このあと、書き方や使いどころなどを詳しく説明していきます。