Pythonのリストの初期化とは何ですか?
Pythonのリストの初期化とは、リストを作成して、要素になんらかの値を入れることです。
リストを初期化しないと、リストは空のリストになります。空のリストは、要素が1つも含まれていないリストです。
Pythonでのリストの初期化方法
リストの初期化の方法は、大きく分けて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))
リスト内包表記を使用する
これは、「角カッコ」の応用ですね。プログラム的な規則に沿って初期化したい、っていうときに使われます。初見だと「なんだこれ!?」ってなりやすい表記方法。
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行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次元のリストが追加できてしまいます。