【Python入門】2次元配列の使い方をマスターしよう!

Pythonでは他のプログラミング言語同様2次元配列(リストのリスト)を使用することが可能です。

2次元配列の定義方法が知りたい
2次元配列に要素を指定する方法が知りたい
2次元配列をソートする方法が知りたい

そんな悩みを抱えている方に向けて、この記事では2次元配列の基本的な使い方について解説していきます。

  • 【基礎】2次元配列の宣言
  • 【基礎】2次元配列の使い方
  • 【発展】2次元配列のソート方法

2次元配列(リストのリスト)は通常のリストと比べて扱いにくいですが、ここでは初心者でもわかるように解説していますのでぜひ御覧ください。

※ この記事のコードはPython 3.7で動作確認しました。

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を学び続けていいのかな…
まだまだ知りたいことがたくさんある!
もっと詳しくPythonについて知りたい!

といった悩みや願望を持っている方は、弊社「侍エンジニア塾」をご利用下さい。

侍エンジニア塾では、

  • 現役エンジニアによるマンツーマンレッスン
  • キャリアアドバイザーによる転職・就職支援
  • 業界屈指のフリーランス・起業サポート

を受けることができます。

業界屈指のコンサルタントから、効率的な学習方法や仕事獲得術、今後のキャリアまでさまざまな疑問を相談してみませんか?遠方の方でもオンラインで受講できます!お気軽に受講下さい。

侍エンジニア塾
無料体験レッスンを受ける

まとめ

ここでは、2次元配列(リストのリスト)の宣言や使い方について解説しました。

  • 2次元配列の宣言
  • 2次元配列の使い方
  • 2次元配列のソート方法

2次元配列も基本的に1次元配列と考え方は一緒ですので、この記事で紹介した正しい方法で使い方を覚えていただければと思います。

なお、今Pythonを学習している方は以下の記事もどうぞ。

はじめてPythonを使う方でもわかりやすいように、Pythonでできることやその学習法などを中心にまとめています。

復習にも使えると思いますので、ぜひ一度ご覧になってみてくださいね。

Python 入門完全攻略ガイド

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

フクロウ

第一言語はPythonです。
皆さんRustやりましょう。

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー