Help us understand the problem. What is going on with this article?

[Python] listが空かどうか判定する方法2つ

方法

  • 1つ目
a = []
if not a:
 print("リストは空です")
  • 2つ目
a = []
if len(a)==0:
 print("リストは空です")

解説

1つ目の方法、2つ目の方法ともに問題なく動作します。
pythonのlistは、空であればFalse、中身が入ってればTrueを返す性質があります。

>>> bool(['A','B','C'])
True
>>> bool([])
False

1つ目の方法はこの性質を使って判定しています。
2つ目の方法は、listの要素数を調べてサイズが0であれば空ということにしています。
stack overflowではどちらの方法が良いかという議論があり、1つ目が優勢です。
理由としては、listのサイズを調べる前に、まずlist変数の真偽を調べるのが先だということです。
またPythonのコーディング規約のPEP8においても1つ目の方法が推奨されています。
2つ目も可読性があって良いとは思います。

追記

  • 3つ目
if a == []:
 print("リストは空です")

1つ目や2つ目は、list以外にも空の文字列や空のタプルでもTrueを返してしまいます。3つ目の方法では、変数aはlistでなければいけないという条件をつけた上で、空かどうかを判定できます。

ご指摘ありがとうございます!
if a == []:
では、aが空である、かつaがlistである、と2つの条件をチェックできます。
今回のタイトルである「listが空かどうか判定する方法」をより厳密にチェックできて良いと思います。
勉強になりました。追記をいたしました。

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
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  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
ユーザーは見つかりませんでした