リスト 文法・環境

【python】リスト(list)の空の判定、空のリストの作成方法について

pythonの空のリストの扱い方について紹介します。

本記事では、下記の内容を紹介しています。

この記事で分かること

■空のリスト(list)の判定方法について

  • 判定方法①:if not文を使用
  • 判定方法②:len関数を使用
  • 判定方法③:空の配列と比較

■空のリスト(list)の作成方法について

  • 空のリストの作成方法①: [ ]で作成
  • 空のリストの作成方法②:list関数を使用
  • 【補足】2次元の空のリストを作成方法

スポンサーリンク

リスト(list)の空の判定方法について【チェック】

pythonのリストが、空か判定する方法について紹介します。

判定方法は複数ありますが、代表的なものを3つ紹介します。

それぞれサンプルコードも記載しますので、参考にしてみてください。

空のリストの判定方法①:if not文を使用

はじめに、「if not」文を用いた方法を紹介します。

シーケンス型の変数(リスト、タプル、文字列)では、要素が空の場合Falseを返します

これを利用して、リストが空か判定します。

なお、変数の型については、下記の記事で詳細に解説していますので、興味のある方は参考にしてみてください。

空のリストがFalseを返してくるのを確認してみます。

### 空のリストはFalseを返す。
list_fruits = ["Apple", "Banana", "Orange"]
list_empty = []

print(bool(list_fruits))
# True

print(bool(list_empty))
# False

以下、リストが空か判定するサンプルコードです。

### リストが空か判定するサンプルコード【if not】
list_fruits = ["Apple", "Banana", "Orange"]
list_empty = []

if not list_fruits :
    print("list is empty")
else :
    print("list is not empty")
# list is not empty

if not list_empty :
    print("list is empty")
else :
    print("list is not empty")
# list is empty

なお、この判定方法が、python公式がコードスタイルガイド(PEP 8)で推奨している判定方法になります。

・For sequences, (strings, lists, tuples), use the fact that empty sequences are false:

# Correct:
if not seq:
if seq:

# Wrong:
if len(seq):
if not len(seq):

引用:PEP 8 -- Style Guide for Python Code

空のリストの判定方法②:len関数を使用

len関数を用いても、リストが空か判定することができます

ただし、前述のとおり、PEP 8(python Style Guide)では非推奨なので、if notを使った判定を行う方が無難です。

以下、サンプルコードです。

### リストが空か判定するサンプルコード【len関数】
list_fruits = ["Apple", "Banana", "Orange"]
list_empty = []

if len(list_fruits) == 0:
    print("list is empty")
else :
    print("list is not empty")
# list is not empty

if len(list_empty) == 0:
    print("list is empty")
else :
    print("list is not empty")
# list is empty

空のリストの判定方法③:空の配列と比較

空のリストとの比較を行っても、リストが空か判定することができます

ただし、こちらの方法もPEP 8(python Style Guide)では非推奨なので、if notを使った判定を行う方が無難です。

以下、サンプルコードです。

### リストが空か判定するサンプルコード【空のリストと比較】
list_fruits = ["Apple", "Banana", "Orange"]
list_empty = []

if list_fruits == []:
    print("list is empty")
else :
    print("list is not empty")
# list is not empty

if list_empty == []:
    print("list is empty")
else :
    print("list is not empty")
# list is empty

スポンサーリンク

空のリスト(list)の作成方法について

次に、空のリストを作成する方法について紹介します。

空のリストの作成方法①: [ ]で作成

空のリストの作成方法の1つ目です。

### 空のリストの作成方法
list_empty = []

print(list_empty)
# []

print(len(list_empty))
# 0

長さ 0 の、空のリストが作成されています。

空のリストの作成方法②:list関数を使用

空のリストの作成方法の2つ目です。

指定した要素をリストに変換する、list関数を用いて、空のリストを生成しています。

### 空のリストの作成方法【list関数】
list_empty = list()

print(list_empty)
# []

print(len(list_empty))
# 0

【補足】2次元の空のリストを作成方法

補足として、2次元の空のリストを作成する方法を紹介します。

2次元の空のリストの作成方法について、

下記のサンプルコードには、2つの方法を記載しています。

### 2次元の空のリストの作成方法
num = 5
empty_list1 = [[]] * num
empty_list2 = [[] for _ in range(num)]

print(empty_list1)
# [[], [], [], [], []]
print(empty_list2)
# [[], [], [], [], []]

どちらの方法でも、同じ2次元の空のリストが生成されているように見えます。

ところが、これら2つのリストは挙動が異なります。

### 生成された空の2次元リストに要素を追加
empty_list1[0].append(1)
empty_list2[0].append(1)

print(empty_list1)
# [[1], [1], [1], [1], [1]]
print(empty_list2)
# [[1], [], [], [], []]

この原因は、 [ [ ] ] * num の方法で生成した空の2次元リストは、

要素であるリストがすべて同じidを持つオブジェクトであることに依ります。

### 生成された2次元リストの要素のidを確認
print(id(empty_list1[0]))
# 2135914429192
print(id(empty_list1[1]))
# 2135914429192

print(id(empty_list2[0]))
# 2135913306504
print(id(empty_list2[1]))
# 2135898942984

空の2次元リストを作成する場合は、それぞれの要素のリストが独立であることが好ましい場合がほとんどだと思いますので、

[ [ ] for _ in range(num) ] の方法で空のリストを生成するのが良いと思います。

スポンサーリンク

まとめ

pythonのリスト(list)の空の判定、空のリストの作成方法について紹介しました。

どちらもよく使うので、基本的な使い方は覚えておくようにしましょう。

スポンサーリンク

-リスト, 文法・環境
-,