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

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

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

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

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

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

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

なお、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の場合は直接値を指定して定義する方法となります。


【なかなかエラーが解決できない…そんな悩みを解決します!】

登録無料で始められるプログラミングスクール「侍テラコヤ」

・回答率100%のQ&A掲示板でエラーを解決!
現役エンジニアとのオンライン相談で悩みを解決!
・50種類以上の教材で複数言語を習得!

侍テラコヤについて詳しく見る

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 入門完全攻略ガイド

プログラミング学習中、
誰かへ相談したいことはありませんか?

SAMURAI TERAKOYA

プログラミングはエラーの連続。作業を進めるなかで誰かに教えてほしい場面は多いですよね。

そんな悩みを解決できるのが、侍テラコヤです。登録無料で始められて、現役エンジニアとオンラインで相談できるほか、回答率100%のQA掲示版でプログラミングに関する悩みを解決します!

気になる方はぜひ詳細をご覧ください。

→侍テラコヤの詳細をみる

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

あなたの目的に合わせた
SAMURAI ENGINEERの運営サービス

SAMURAI ENGINEER Pro

未経験でも挫折しないプログラミングスクール

詳細はこちら

SAMURAI TERAKOYA

日本最大級のサブスク型オンラインITスクール

詳細はこちら

SAMURAI ENGINEER Freelance

「一人で稼げる」スキルを身につける

詳細はこちら
Close