Pythonでは他のプログラミング言語同様2次元配列(リストのリスト)を使用することが可能です。
2次元配列に要素を指定する方法が知りたい
2次元配列をソートする方法が知りたい
そんな悩みを抱えている方に向けて、この記事では2次元配列の基本的な使い方について解説していきます。
- 【基礎】2次元配列の宣言
- 【基礎】2次元配列の使い方
- 【発展】2次元配列のソート方法
2次元配列(リストのリスト)は通常のリストと比べて扱いにくいですが、ここでは初心者でもわかるように解説していますのでぜひ御覧ください。
※ この記事のコードはPython 3.7で動作確認しました。
本記事を読む前に、Pythonがどんなプログラミング言語なのかをおさらいしておきたい人は次の記事を参考にしてください。
→ Pythonとは?特徴やできること、活用例をわかりやすく簡単に解説
なお、その他のPythonの記事についてはこちらにまとめています。
2次元配列の宣言
配列は値を複数格納できる箱ですが、2次元配列の場合は、値を格納できる箱が縦と横に並んだ配列と配列のことを指します。
なお、Pythonでは配列に相当する型のことをリストと呼びます。そのため、ここでいう2次元配列はリストのリストとなります。Pythonでリストを宣言するときは、通常以下のように記述します。
1次元配列(リスト)の宣言
list1 = [1] * 5 list2 = [1, 2, 3, 4, 5] print(list1) print(list2)
実行結果:
[1, 1, 1, 1, 1] [1, 2, 3, 4, 5]
list1のように要素に値を格納する方法と、list2のように要素をかけて値が1の要素数5のリストを作成する方法などがあります。
2次元配列(リストのリスト)の宣言
list1 = [[0]*3]*2 list2 = [[0 for i in range(3)] for j in range(2)] list3 = [[1, 2, 3], [10, 20, 30], [100, 200, 300]] print(list1) print(list2) print(list3)
実行結果:
[[0, 0, 0], [0, 0, 0]] [[0, 0, 0], [0, 0, 0]] [[1, 2, 3], [10, 20, 30], [100, 200, 300]]
list1の場合は二次元目の要素数3、一次元目の要素数2というように指定して初期化できます。
list2の場合は内包表記でfor文を使って二次元目の要素数3、一次元目の要素数2を指定して初期化しています。
list3の場合は直接値を指定して定義する方法となります。
2次元配列の使い方
では定義した2次元配列(リストのリスト)に対して値を設定してみましょう。以下のサンプルを御覧ください。
list1 = [[0]*3]*2 list2 = [[0 for i in range(3)] for j in range(2)] print("2次元配列の初期化") print("list1 = {0}".format(list1)) print("list2 = {0}".format(list2)) list1[0][1] = 1 list2[0][1] = 1 print("要素設定後") print("list1 = {0}".format(list1)) print("list2 = {0}".format(list2))
実行結果
2次元配列の初期化 list1 = [[0, 0, 0], [0, 0, 0]] list2 = [[0, 0, 0], [0, 0, 0]] 要素設定後 list1 = [[0, 1, 0], [0, 1, 0]] list2 = [[0, 1, 0], [0, 0, 0]]
list1とlist2は同じ配列ですが、結果が異なることがわかりますね。
list1の場合は[0]*3で同じリストを3つ定義しているだけなので、要素の値を変更すると他の要素まで変わってしまいます。
list2の場合は内包表記を使って複数のリストを作っているので、2次元配列(リストのリスト)の要素[0][1]番目のみ、つまり意図したとおり値が変更されています。
そのため、要素番号を指定して正しく要素を指定したい場合は2次元配列をlist2のような内包表記で宣言すると良いでしょう。
2次元配列をソートする
2次元配列(リストのリスト)もリスト同様sort()メソッドやsorted()メソッドを使用してソートすることが可能です。以下のサンプルを御覧ください。
list1 = [[3, 10, 200], [2, 20, 100], [1, 30, 300]] print("ソート前:{0}".format(list1)) list1.sort() print("ソート後:{0}".format(list1))
実行結果
ソート前:[[3, 10, 200], [2, 20, 100], [1, 30, 300]] ソート後:[[1, 30, 300], [2, 20, 100], [3, 10, 200]]
2次元配列の場合は、それぞれのリストの最初の要素を比較してソートします。
ソートに関しては以下の記事でも詳しく解説しています。
このままPythonを学び続けて大丈夫?
なぜPythonを学ぶのか?
あなたがPythonを学ぶ理由は何でしょうか?
- Pythonが人気だからとりあえず学んでいる
- AIや機械学習の分野に興味があるから
Pythonは初心者向けの言語と言われています。その理由としてシンプルでわかりやすい構文や、実用的なライブラリが豊富なことが挙げられ、実際に学びやすい言語です。
しかし、もしあなたが機械学習に興味があって、とくに知識も無いまま学習を進めると、挫折する可能性が高いと言えます。
機械学習の分野はプログラミング以外にも、専門的な知識や数学の知識も必要になります。ただなんとなく学習していると早い段階でつまづきやすく、そのまま挫折してしまうなんてことも…。
そのため、挫折しないためには、
- 最適な学習環境を用意する
- 必要なライブラリ・ツールを導入する
- わからないことを質問できるメンターを見つける
などが必要になります。
効率よく学びたいなら、無料カウンセリングがおすすめ
まだまだ知りたいことがたくさんある!
もっと詳しくPythonについて知りたい!
といった悩みや願望を持っている方は、弊社「侍エンジニア」をご利用下さい。
侍エンジニアでは、
- 現役エンジニアによるマンツーマンレッスン
- キャリアアドバイザーによる転職・就職支援
- 業界屈指のフリーランス・起業サポート
を受けることができます。
業界屈指のコンサルタントから、効率的な学習方法や仕事獲得術、今後のキャリアまでさまざまな疑問を相談してみませんか?遠方の方でもオンラインで受講できます!お気軽に受講下さい。
侍エンジニア無料カウンセリングを受ける
まとめ
ここでは、2次元配列(リストのリスト)の宣言や使い方について解説しました。
- 2次元配列の宣言
- 2次元配列の使い方
- 2次元配列のソート方法
2次元配列も基本的に1次元配列と考え方は一緒ですので、この記事で紹介した正しい方法で使い方を覚えていただければと思います。
なお、今Pythonを学習している方は以下の記事もどうぞ。
はじめてPythonを使う方でもわかりやすいように、Pythonでできることやその学習法などを中心にまとめています。
復習にも使えると思いますので、ぜひ一度ご覧になってみてくださいね。
【Python 入門完全攻略ガイド】