Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
Address
304 North Cardinal St.
Dorchester Center, MA 02124
Work Hours
Monday to Friday: 7AM - 7PM
Weekend: 10AM - 5PM
今回はPythonのリストの作り方の応用として、あるリストの中の「要素にリスト」を使う多重リスト(配列)の作り方を解説します。
多重リストは今後もみなさんがプログラミングでなにかを作ろうとするとき、あるいはプログラミングの勉強するときに頻繁に登場すると思うので、ぜひこの記事で多重リストの基本に慣れてもらればと思います。
Contents
まずは一番初歩的なリストを作ってみましょう。今回はまず空のリストを1つ作ります。
new_list=[]
これだけですね。他にも作り方はありますが、今回はこういう作り方にしました。
きちんと作れたか表示させてみましょう。
print(new_list)
この結果は次の画像のようになります。(私の環境はAtom+Hydrogenです)
これで出来上がった空リストは、中身が空です。その証拠に、インデックスでゼロを指定し、リストの最初の要素を表示させようと次のコードを書いてもエラーがでます。
print(new_list[0])
では、次にappendメソッドの使い方を少し学習しましょう。なぜなら、今回の解説では多重リストを作る時にappendメソッドを使うからです。
Pythonのリストオブジェクトには、appendメソッドというものが用意されています。このメソッドは、「リストの最後に、何かを付け加える」という機能です。さっそくコードを見てみましょう。
まず、Pythonにおけるメソッドの使い方は、
オブジェクト.メソッド
という書き方でした。
今回は次のようにしてみます。
new_list.append(["ラーメン","カレー"])
これは、new_listという空のリストの最後に、新しいリストとして[“ラーメン”, “カレー”]というリストを放り込むコードです。
表示させてみましょう。
print(new_list)
次のようになります。
最初に作った空のリストにはそもそも何も入っていませんでしたから、その最後の要素とは、すなわち最初の要素(インデックスでゼロの要素)になります。
実際に、インデックスでゼロを指定して、新しくなったnew_listの最初の要素を確認しましょう。
print(new_list[0])
以上のようにして、appendメソッドを使ってリストの最後に別のリストを放り込むことができるとわかりました。
これでPythonでの多重リストの作り方の基本は終わりです。次にこれを応用してさらなる多重リストを作ってみましょう。
今、上述の流れでリストオブジェクトである「new_list」は、
インデックスの番号 | 要素の順番 | 中身 |
---|---|---|
0 | 1 | [“ラーメン”, “カレー”] |
というリストになっています。
今は要素が1つしかないので、「最初の要素=最後の要素」となっています。
では、さらにappendメソッドを使って、[“ラーメン”, “カレー”]というリストを再び放り込んでみましょう。
new_list.append(["ラーメン", "カレー"])
print(new_list)
次の結果となります。
もともとは、
インデックスの番号 | 要素の順番 | 中身 |
---|---|---|
0 | 1 | [“ラーメン”, “カレー”] |
というリストだったわけですが、
インデックスの番号 | 要素の順番 | 中身 |
---|---|---|
0 | 1 | [“ラーメン”, “カレー”] |
1 | 2 | [“ラーメン”, “カレー”] |
というように変化したわけです。
だったら、あとはappendを繰り返し用いれば・・・
new_list.append(["ラーメン", "カレー"])
new_list.append(["ラーメン", "カレー"])
new_list.append(["ラーメン", "カレー"])
print(new_list)
このようにさらに3回appendを繰り返せば、
new_listが、[“ラーメン”, “カレー”]というリストを5つものになります。
すなわちnew_listは、次のようなリストとなります。
インデックスの番号 | 要素の順番 | 中身 |
---|---|---|
0 | 1 | [“ラーメン”, “カレー”] |
1 | 2 | [“ラーメン”, “カレー”] |
2 | 3 | [“ラーメン”, “カレー”] |
3 | 4 | [“ラーメン”, “カレー”] |
4 | 5 | [“ラーメン”, “カレー”] |
いわゆる数学上の行列として表現(エクセルみたいなもの)すると、
列1 | 列2 | |
---|---|---|
行1 | ラーメン | カレー |
行2 | ラーメン | カレー |
行3 | ラーメン | カレー |
行4 | ラーメン | カレー |
行5 | ラーメン | カレー |
という感じです。
上ではappendを5回繰り返しました。同じことを繰り返す処理は、forを使えばできますね。
そこでforを使って書き換えてみましょう。
#まず空のリストを作成
new_list=[]
# リストの要素となるリストを作成
menu=["ラーメン", "カレー"]
# appendの処理を5回繰り返す。
for i in range(0, 5):
new_list.append(menu)
print(new_list)
処理の流れを大雑把に説明します。
まずrange(0, 5)は、0, 1, 2, 3, 4(=5-1)という5個の整数を作りだします。
そして、forにより、それらの整数が順番にiへ代入され処理が開始されます。
i=0となって、 new_list.append(menu) が実行される。
↓
空だったnew_listが、[ [“ラーメン”, “カレー”] ]へ
↓
i=1となって、その [ [“ラーメン”, “カレー”] ] というnew_listに対してまたnew_list.append(menu)が実行される。
↓
[ [“ラーメン”, “カレー”], [“ラーメン”, “カレー”] ]へ↓
i=2となって、その [ [“ラーメン”, “カレー”], [“ラーメン”, “カレー”] ] というnew_listに対して、また new_list.append(menu)が実行される。
↓
[ [“ラーメン”, “カレー”], [“ラーメン”, “カレー”], [“ラーメン”, “カレー”] ]へ
↓
i=3となって・・・以下略
という流れですね。
さて実行結果ですが、次のようになります。
上で作ったリストと同じものが出来上がりました。
ここからは少し応用的な多重リストの作り方を見ていきましょう。
まずは空のリストを要素とする空のリストを作ってみましょう。
new_list01=[]
for a in range(0,3):
new_list01.append([])
print(new_list01)
こうなります。
次に、[0, 1, 2]という整数のリストを要素としてもつリストを自動的に作り出してみましょう。
new_list03 = []
for i in range(3):
new_list03.append([])
for j in range(3):
new_list03[i].append(j)
print(new_list03)
こんなふうにできあがります。
これは、数学上の行列で表すとこうなります。
列1 | 列2 | 列3 | |
---|---|---|---|
行1 | 0 | 1 | 2 |
行2 | 0 | 1 | 2 |
行3 | 0 | 1 | 2 |
では、最後にさらにもう一段深い多重リストを作ってみます。
new_list04 = []
for i in range(3):
new_list04.append([])
for j in range(3):
new_list04[i].append([])
for m in range(3):
new_list04[i][j].append(m)
print(new_list04)
これをあえて数学的な行列として(?)書き表すならばこんな感じで書くのがわかりやすいでしょうか。
列1 | 列2 | 列3 | |
---|---|---|---|
行1 | [0, 1, 2] | [0, 1, 2] | [0, 1, 2] |
行2 | [0, 1, 2] | [0, 1, 2] | [0, 1, 2] |
行3 | [0, 1, 2] | [0, 1, 2] | [0, 1, 2] |
いかがだったでしょうか。最後のややこしいforの使い方は別として、今回の記事でPythonの多重リストの作り方の基本をつかんでもらえれば幸いです。