この記事は Pythonのコードを短く簡潔に書くテクニック Advent Calendar 2017 の10日目です。
はじめに
Pythonでリストなどを作成する際には内包表記を使うことが多いです。
しかし実際には、内包表記を使わなくてもいい場面で使っているケースも少なくありません。
内包表記を使わなくてもいい例
例えば、カレンダー1日目の内包表記を使ってリストの作成を簡潔に書くで最初に挙げた以下の例ですが、
>>> [i for i in range(5)]
[0, 1, 2, 3, 4]
これは内包表記を使わずにlist()
で書くことができます。
>>> list(range(5))
[0, 1, 2, 3, 4]
このほうが短く書けてスッキリします。
内包表記を使わなくてもいい条件
リスト内包表記の構文は以下のようになっています。1
[expression for var in itr if filter_expr]
内包表記を使う必要がないのは、
-
expression
とvar
が同じ - if節によるフィルター条件がない
の全てを満たす場合です。
この場合はlist(itr)
という書き方ができます。
辞書内包表記、セット内包表記も同様にdict(itr)
、set(itr)
で置き換えられます。
最後に
Pythonに慣れてくるとなんでも内包表記で書きたくなってしまいますが、本当に内包表記が必要なのか考えて使うようにしましょう。
-
説明をわかりやすくするためにこの構文は簡略化しています。正確な構文はPythonドキュメント » Python 言語リファレンス » 6.2.4. リスト、集合、辞書の表示を参照してください。 ↩