Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
4
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

実は内包表記を使わなくてもいい場合もある

この記事は 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]

内包表記を使う必要がないのは、

  • expressionvarが同じ
  • if節によるフィルター条件がない

の全てを満たす場合です。

この場合はlist(itr)という書き方ができます。

辞書内包表記、セット内包表記も同様にdict(itr)set(itr)で置き換えられます。

最後に

Pythonに慣れてくるとなんでも内包表記で書きたくなってしまいますが、本当に内包表記が必要なのか考えて使うようにしましょう。



  1. 説明をわかりやすくするためにこの構文は簡略化しています。正確な構文はPythonドキュメント » Python 言語リファレンス » 6.2.4. リスト、集合、辞書の表示を参照してください。 

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
4
Help us understand the problem. What are the problem?