210
154

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

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

Last updated at Posted at 2017-11-05

##方法

  • 1つ目
.py
a = []
if not a:
 print("リストは空です")
  • 2つ目
.py
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つ目
.py
if a == []:
 print("リストは空です")

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

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

210
154
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
210
154

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?