python list 初期化/値の追加の要素の入門の基本

Pythonのリストの初期化とは何ですか?

リストの初期化とは何ですか?

Pythonのリストの初期化とは、リストを作成して、要素になんらかの値を入れることです。

リストを初期化しないと、リストは空のリストになります。空のリストは、要素が1つも含まれていないリストです。

Pythonでのリストの初期化方法

Pythonでのリストの初期化方法

リストの初期化の方法は、大きく分けて2つあります。

リストの要素を初期化するための2つの方法

  • 角カッコで囲む
  • list()関数を使用する

Pythonでのリストの初期化方法は、以下のとおりです。

  • 角かっこで囲む
numbers = [1, 2, 3, 4, 5]
  • list()関数を使用する
numbers = list((1, 2, 3, 4, 5))

角かっこで囲む

角かっこで囲んで、要素をカンマで区切って指定します。

例えば、以下のコードは、1から5までの数値を要素とするリストを初期化しています。

numbers = [1, 2, 3, 4, 5]

list()関数を使用する

list()関数を使用して、タプルやセットなどの他のコレクションをリストに変換します。

例えば、以下のコードは、タプルをリストに変換しています。

numbers = list((1, 2, 3, 4, 5))

リスト内包表記を使用する

これは、「角カッコ」の応用ですね。プログラム的な規則に沿って初期化したい、っていうときに使われます。初見だと「なんだこれ!?」ってなりやすい表記方法。

関連)python ifを一行で

numbers = [i for i in range(1, 6)]

リスト内包表記を使用して、イテラブルオブジェクトの要素をリストに変換します。

例えば、以下のコードは、1から5までの数値を要素とするリストを初期化しています。

numbers = [i for i in range(1, 6)]

リストの初期化の例

リストの初期化の例をいくつか紹介します。

  • 空のリスト
numbers = []
  • 要素が1つのリスト
numbers = [1]
  • 要素が複数のリスト
numbers = [1, 2, 3, 4, 5]
  • 要素が文字列のリスト
numbers = ["a", "b", "c", "d", "e"]
  • 要素がタプルのリスト
numbers = [(1, 2), (3, 4), (5, 6)]

2次元リストの初期化方法

2次元リストの初期化方法

以下のコードは、2行3列の二次元リストを初期化しています。

numbers = [[1, 2, 3], [4, 5, 6]]

2次元くらいならいいですが、次元が増えてくるとワケわかんなくなるかも知れないですね。多次元のリスト初期化は内包表記を使って書くのがシンプルかも。

例えば以下は、5次元のリストを内包表記で初期化する例。

リスト名 = [[[[要素1, 要素2, ..., 要素N] for 要素N in 要素M] for 要素M in 要素L] for 要素L in 要素K]

リストの初期化に関連する問題

リストの初期化に関連する問題の解決法

Pythonのリストの初期化には、「あらかじめ値を入れておく」くらいの意味合いしかありません。ある意味自由なのですが、感覚的に「そこはエラーにしといてくれ」という場合もあります。

  • 要素の型が不正である

リストの要素の型が不正であると、リストは普通に生成されますが、後の処理で「数値だと思ってたら、文字列が入ってた」というケースで、不具合が生じます。例えば、以下のコードは、文字列のリストに整数を追加しています。

numbers = ["a", "b", "c"]
numbers.append(1)

このコードは、特にエラーなく処理されます。

  • 要素の数が不正である

リストの要素数が不正であると、あとの処理で不具合が発生する可能性があります。例えば、以下のコードは、3次元リストを初期化していますが、普通に2次元リストを追加できてしまいます。

numbers = [[[1, 2, 3]], [[4, 5, 6]]]
numbers.append([7, 8, 9])

このコードは、特にエラーなく処理され、3次元のリストに2次元のリストが追加できてしまいます。