カテゴリ: Python 更新日: 2025/12/28

Pythonで2次元リストを作成・操作する方法を完全ガイド!初心者でもわかる入れ子リストの使い方

Pythonで2次元リストを作成・操作する方法!リストの入れ子構造を学ぶ
Pythonで2次元リストを作成・操作する方法!リストの入れ子構造を学ぶ

先生と生徒の会話形式で理解しよう

生徒

「先生、Pythonで表みたいなデータを作る方法ってありますか?表計算みたいな感じの。」

先生

「それなら2次元リストを使えばできますよ。行と列を持つ表のようなデータを扱うのにぴったりです。」

生徒

「2次元リストって難しそうですけど、大丈夫ですか?」

先生

「大丈夫です。2次元リストは、『リストの中にリストが入っている』というだけなんです。一緒に順番に見ていきましょう!」

1. 2次元リストとは?

1. 2次元リストとは?
1. 2次元リストとは?

2次元リストとは、「リストの中にリストが入っている」入れ子構造のリストのことです。表(テーブル)やマス目のようにデータを管理できます。

例えば、3行3列のマス目を表現するとこうなります:


matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

このように、ひとつのリストに3つのリストが入っており、それぞれが「行」を表しています。

2. 2次元リストの特定の値にアクセスする

2. 2次元リストの特定の値にアクセスする
2. 2次元リストの特定の値にアクセスする

リストの中のリストにアクセスするには、2つのインデックスを使います。

例えば、上のmatrixから「5」を取り出すにはこうします:


print(matrix[1][1])

5

最初の[1]が「2番目の行」、次の[1]が「その中の2番目の列」を意味します。Pythonでは番号が0から始まるので注意!

3. 2次元リストの中身をすべて表示する

3. 2次元リストの中身をすべて表示する
3. 2次元リストの中身をすべて表示する

すべての要素を表示するには、繰り返し処理(for文)を使います。


for row in matrix:
    for item in row:
        print(item, end=" ")
    print()

1 2 3 
4 5 6 
7 8 9 

このように、まず1行ずつ取り出して、その中のデータも1つずつ表示していきます。

4. 2次元リストを使って表を初期化する

4. 2次元リストを使って表を初期化する
4. 2次元リストを使って表を初期化する

2次元リストをゼロで埋めたいときは、リスト内包表記を使うと便利です。


rows = 3
cols = 4
zero_matrix = [[0 for _ in range(cols)] for _ in range(rows)]
print(zero_matrix)

[[0, 0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

このようにして、3行4列のゼロ表を簡単に作ることができます。

5. 2次元リストの値を変更するには?

5. 2次元リストの値を変更するには?
5. 2次元リストの値を変更するには?

特定の位置の値を変更したいときは、行番号・列番号でアクセスして代入します。


zero_matrix[0][1] = 99
print(zero_matrix)

[[0, 99, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0]]

このように、簡単に値を変えることができます。

6. 2次元リストの活用シーンと検索キーワード

6. 2次元リストの活用シーンと検索キーワード
6. 2次元リストの活用シーンと検索キーワード

2次元リストは、さまざまな場面で活躍します:

  • ゲームのマス目(オセロや将棋など)
  • 座席表やスケジュール表
  • CSVデータの処理や表形式のデータの管理

検索するときは、「Python 2次元リスト 作り方」「Python リスト 入れ子」「リスト 表形式 データ Python」などのキーワードが役立ちます。

まとめ

まとめ
まとめ

今回の記事では、Pythonにおける2次元リストの基本から実践的な使い方までを順番に学んできました。2次元リストとは、「リストの中にリストが入っている構造」であり、行と列を持つ表形式のデータを扱うための非常に重要なデータ構造です。Python初心者にとっては少し難しく感じられることもありますが、実際には「1行ずつのリストをまとめたもの」と考えることで、理解しやすくなります。 2次元リストを使うことで、表計算ソフトのようなデータ構造や、ゲームのマス目、座席表、スケジュール管理、CSVデータの読み込み結果など、現実世界に近いデータをそのままプログラム上で表現できるようになります。特に、行番号と列番号を使って特定の値にアクセスできる点は、Pythonのリスト操作を深く理解するうえで欠かせないポイントです。 記事の中では、matrix[行][列]という形で要素にアクセスする方法や、for文を使って2重ループで全要素を処理する方法を学びました。これにより、2次元リストの中身を順番に表示したり、条件に応じて処理を分岐させたりといった応用が可能になります。また、リスト内包表記を使った初期化方法を覚えることで、任意の行数・列数を持つ2次元リストを効率よく作成できるようになります。 さらに、特定の位置の値を変更する操作を通して、2次元リストが「読み取り専用」ではなく、「自由に更新できる柔軟なデータ構造」であることも確認しました。これらの操作を理解しておくと、Pythonでのデータ処理やアルゴリズム学習、簡単なゲーム制作など、さまざまな分野への応用が一気に広がります。 2次元リストは、Pythonの基礎文法であるリスト、インデックス、for文を組み合わせた集大成とも言える存在です。今回学んだ内容をしっかり復習し、「Python 2次元リスト 作成」「Python 入れ子リスト 使い方」「Python 表形式 データ 操作」といったテーマに自然と対応できるようになることが、次のステップへの大きな一歩になります。

サンプルプログラムで理解を深めよう


# 3行3列の2次元リストを作成
table = [
    [10, 20, 30],
    [40, 50, 60],
    [70, 80, 90]
]

# すべての値を表示
for row in table:
    for value in row:
        print(value, end=" ")
    print()

# 特定の値を変更
table[1][2] = 99
print(table)

このサンプルプログラムでは、2次元リストの作成、全要素の表示、特定の要素の更新という基本的な操作をまとめて確認できます。実際に手を動かしてコードを書き、実行結果を確認することで、2次元リストの構造や動きがよりはっきりと理解できるでしょう。

先生と生徒の振り返り会話

生徒

「2次元リストって難しそうだと思っていましたが、行ごとのリストだと考えると分かりやすかったです。」

先生

「その考え方がとても大切ですね。1次元リストを組み合わせているだけだと理解できれば怖くありません。」

生徒

「for文を2回使う理由も、行と列を順番に見ているからなんですね。」

先生

「その通りです。2重ループは2次元リストとセットで覚えると、自然に使えるようになりますよ。」

生徒

「ゲームのマス目や表データに使えると聞いて、実際のイメージがわいてきました。」

先生

「ぜひいろいろな場面で使ってみてください。2次元リストを使いこなせるようになると、Pythonの表現力が一気に広がりますよ。」

カテゴリの一覧へ
新着記事
New1
Django
Djangoのプロジェクトとアプリの違いを徹底解説!初心者でも迷わない構造の考え方
New2
Flask
FlaskでRQ(Redis Queue)を使って非同期タスク管理を行う方法|初心者向けやさしい解説
New3
Flask
FlaskでCookieを安全に使う方法!HttpOnly・Secureフラグの使い方を徹底解説
New4
Flask
Flask‑RESTfulでREST APIを構築する手順まとめ!初心者向けにやさしく解説
人気記事
No.1
Java&Spring記事人気No1
Django
Django環境構築の全手順を完全解説!初心者でも迷わないPython・Djangoセットアップガイド
No.2
Java&Spring記事人気No2
Django
DjangoとFlaskの違いを完全比較!初心者でもわかるPythonフレームワーク入門
No.3
Java&Spring記事人気No3
Flask
Flaskアプリの環境変数設定方法!安全で柔軟な構成を実現しよう
No.4
Java&Spring記事人気No4
Flask
FlaskアプリをNginx + Gunicornで本番運用する方法!初心者でもわかるデプロイ構成の基本
No.5
Java&Spring記事人気No5
Python
Pythonの文字列を1文字ずつ処理する方法!for文やlist化の活用例
No.6
Java&Spring記事人気No6
Python
Pythonでリストをコピーする方法!copy()・スライス・list()の使い方を比較
No.7
Java&Spring記事人気No7
Python
Pythonのmatch文(パターンマッチング)とは?switch文の代替としての使い方をやさしく解説
No.8
Java&Spring記事人気No8
Flask
Flask-WTFの使い方!フォームバリデーションを簡単にする拡張機能の導入手順