1. tag1216

    No comment

    tag1216
Changes in tags
Changes in body
Source | HTML | Preview
@@ -1,52 +1,54 @@
+この記事は [Pythonのコードを短く簡潔に書くテクニック Advent Calendar 2017](https://qiita.com/advent-calendar/2017/python-short-code) の10日目です。
+
# はじめに
Pythonでリストなどを作成する際には内包表記を使うことが多いです。
しかし実際には、内包表記を使わなくてもいい場面で使っているケースも少なくありません。
# 内包表記を使わなくてもいい例
[内包表記を使ってリストの作成を簡潔に書く]:https://qiita.com/tag1216/items/040e482f9844805bce7f
例えば、カレンダー1日目の[内包表記を使ってリストの作成を簡潔に書く]で最初に挙げた以下の例ですが、
```pycon
>>> [i for i in range(5)]
[0, 1, 2, 3, 4]
```
これは内包表記を使わずに`list()`で書くことができます。
```pycon
>>> list(range(5))
[0, 1, 2, 3, 4]
```
このほうが短く書けてスッキリします。
# 内包表記を使わなくてもいい条件
リスト内包表記の構文は以下のようになっています。[^1]
```py3
[expression for var in itr if filter_expr]
```
[^1]: 説明をわかりやすくするためにこの構文は簡略化しています。正確な構文は[Pythonドキュメント » Python 言語リファレンス » 6.2.4. リスト、集合、辞書の表示](https://docs.python.jp/3/reference/expressions.html#displays-for-lists-sets-and-dictionaries)を参照してください。
内包表記を使う必要がないのは、
- `expression`と`var`が同じ
- if節によるフィルター条件がない
の全てを満たす場合です。
この場合は`list(itr)`という書き方ができます。
辞書内包表記、セット内包表記も同様に`dict(itr)`、`set(itr)`で置き換えられます。
# 最後に
Pythonに慣れてくるとなんでも内包表記で書きたくなってしまいますが、本当に内包表記が必要なのか考えて使うようにしましょう。
---