Pythonでリスト・タプルを初期化する方法
Pythonでリストやタプルを初期化する方法について解説します。
Pythonのリスト(配列)とタプルを任意の値や要素数で初期化する方法について解説します。
空のリスト・タプルを作成する
要素数がゼロのリスト・タプルを作成するには、要素を指定せずにリスト・タプルを記述します。
# 空のリスト・タプルを作成する
empty_list = []
print(empty_list)
# []
print(type(empty_list))
# <class 'list'>
print(len(empty_list))
# 0
empty_tuple = ()
print(empty_tuple)
# ()
print(type(empty_tuple))
# <class 'tuple'>
print(len(empty_tuple))
# 0
空のリスト・タプルを作成したら、append()
メソッドやremove()
メソッドで要素を追加・削除することができます
指定した値・要素数でリスト・タプルを初期化する
指定した値と要素数でリストを初期化したい場合には、*
演算子を使います。任意の要素をリストに含めて、欲しい要素数だけ掛け算をします。
# 指定した値・要素数でリストを初期化する
# 全ての要素を0で埋めた、長さ5のリストを作成
initialized_list = [0] * 5
print(initialized_list)
# [0, 0, 0, 0, 0]
タプルでも同様に初期化することができますが、要素数が1のタプルを作る場合には注意が必要です。要素数1のタプルを作成するには、タプル内の末尾に,
(カンマ)が必要になります。
# 指定した値・要素数でタプルを初期化する
# 全ての要素を0で埋めた、長さ5のタプルを作成
# 初期化時にタプルの末尾にカンマが必要
initialized_tuple = (0,) * 5
print(initialized_tuple)
# (0, 0, 0, 0, 0)
連番のリスト・タプルを作成する場合にはrange()
関数を使いましょう。
# 連番でリスト・タプルを初期化する
# 1から5の連番でリスト・タプルを作成
serial_num_list = list(range(1, 6))
print(serial_num_list)
# [1, 2, 3, 4, 5]
serial_num_tuple = tuple(range(1, 6))
print(serial_num_tuple)
# (1, 2, 3, 4, 5)
複数の要素を繰り返して初期化することもできます。
# 複数の要素を繰り返して初期化する
multiple_element_list = ["Red", "Blue", "Green"] * 3
print(multiple_element_list)
# ['Red', 'Blue', 'Green', 'Red', 'Blue', 'Green', 'Red', 'Blue', 'Green']
multiple_element_tuple = ("Red", "Blue", "Green") * 3
print(multiple_element_tuple)
# ('Red', 'Blue', 'Green', 'Red', 'Blue', 'Green', 'Red', 'Blue', 'Green')
2次元リストを初期化する方法
2次元のリスト(ネストされたリスト)を初期化するには、リスト内包表記を使います。リスト内包表記の基本的な使い方については以下の記事を参考にしてください。
# 2次元リストを初期化する方法
nested_list = [[0] * 3 for i in range(3)]
print(nested_list)
# [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
# 3次元以上の場合は、リスト内包表記をネストする
nested_list_2 = [[[0] * 3 for i in range(3)] for j in range(3)]
print(nested_list_2)
# [[[0, 0, 0], [0, 0, 0], [0, 0, 0]],
# [[0, 0, 0], [0, 0, 0], [0, 0, 0]],
# [[0, 0, 0], [0, 0, 0], [0, 0, 0]]]
1次元のリストを初期化する場合のように、[[0] * 5] * 3
といった書き方をすると、中身のリスト(0を5つ含んだリスト)が同じオブジェクトとみなされてしまい、そのうちの一つの要素を変更した際に他のリストの要素も書き変わってしまいます。大抵の場合はバグの温床となるため、2次元以上のリストを作る際にはリスト内包表記を使う方法が良いでしょう。