Pythonの入れ子リスト(ネストしたリスト):作成、参照、更新の方法

Pythonのリスト(list)は、その要素として数値や文字列だけでなく、別のリストを持つこともできます。このように、リストの中にリストが入った構造を「入れ子(ネスト)リスト」と呼びます。

入れ子リストは、2次元のグリッド(行列やマス目)、座標データ、あるいはグループ化されたデータ(例:学生ごとの科目スコア)などを表現するのに非常に便利です。

この記事では、入れ子リストの基本的な作成方法、要素へのアクセス方法、そして要素の更新方法について解説します。

目次

入れ子リストの作成

入れ子リストは、通常のリストと同様に [](角括弧)を使って作成します。外側の [] の中に、要素としてカンマ区切りのリストを配置します。

例として、3人の学生がそれぞれ3教科(国語、数学、英語)の試験を受けたスコアデータを考えます。

# [国語, 数学, 英語] のスコアを1つのリストとし、
# それを学生ごと(3人分)にまとめた入れ子リスト
student_scores = [
    [80, 90, 85],  # 1人目 (インデックス 0) のスコア
    [92, 88, 95],  # 2人目 (インデックス 1) のスコア
    [78, 85, 80]   # 3人目 (インデックス 2) のスコア
]

print(f"全体のスコアデータ: {student_scores}")

実行結果:

全体のスコアデータ: [[80, 90, 85], [92, 88, 95], [78, 85, 80]]

入れ子リストの要素へのアクセス

入れ子リストの要素にアクセスするには、インデックス参照の [] を2回(あるいはそれ以上)続けます。

my_list[インデックス1][インデックス2]

  • [インデックス1]:外側のリストのインデックス(どの内側リストか)
  • [インデックス2]:内側のリストのインデックス(その中のどの要素か)

[column] for a nested list]

1. 内側のリスト全体へのアクセス

インデックスを1回だけ指定すると、その位置にある内側のリスト全体が取り出されます。

# 2人目 (インデックス 1) のスコアリスト全体を取得
scores_student_2 = student_scores[1]

print(f"2人目の全スコア: {scores_student_2}")

実行結果:

2人目の全スコア: [92, 88, 95]

2. 特定の要素へのアクセス

インデックスを2回指定することで、内側のリストの特定の要素に直接アクセスできます。

# 2人目 (インデックス 1) の、
# 3番目の科目 (インデックス 2 = 英語) のスコアを取得
score_student_2_english = student_scores[1][2]

print(f"2人目の英語のスコア: {score_student_2_english}")

# 1人目 (インデックス 0) の、
# 1番目の科目 (インデックス 0 = 国語) のスコアを取得
score_student_1_japanese = student_scores[0][0]
print(f"1人目の国語のスコア: {score_student_1_japanese}")

実行結果:

2人目の英語のスコア: 95
1人目の国語のスコア: 80

入れ子リストの要素の更新

入れ子リストの要素を更新する場合も、アクセスと同じようにインデックスを2回指定して代入(=)します。

print(f"更新前のデータ: {student_scores}")

# 1人目 (インデックス 0) の、
# 2番目の科目 (インデックス 1 = 数学) のスコアを 90 から 93 に変更
student_scores[0][1] = 93

print(f"更新後のデータ: {student_scores}")

実行結果:

更新前のデータ: [[80, 90, 85], [92, 88, 95], [78, 85, 80]]
更新後のデータ: [[80, 93, 85], [92, 88, 95], [78, 85, 80]]

student_scores[0][1] の値が 90 から 93 に置き換わっていることが確認できます。

まとめ

  • 入れ子リストは、リストの要素として別のリストを持つ構造です。
  • my_list[index1] で内側のリスト全体にアクセスできます。
  • my_list[index1][index2] で内側のリストの特定の要素にアクセス・更新できます。

2次元データを扱う際、[][] のようにインデックスを2つ使う感覚を掴むことが、入れ子リストを使いこなすための鍵となります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次