1. tag1216

    Posted

    tag1216
Changes in title
+実は内包表記を使わなくてもいい場合もある
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,52 @@
+# はじめに
+
+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に慣れてくるとなんでも内包表記で書きたくなってしまいますが、本当に内包表記が必要なのか考えて使うようにしましょう。
+
+---
+