【第4回Python基礎講座】データを箱に並べる:リストの基本

本ページはプロモーションが含まれています
【第4回Python基礎講座】データを箱に並べる:リストの基本
国内のAI狂い

やっほー!国内のAI狂いだよ!✨

第4回へようこそ!前回は「文字」を並べて遊んだけど、今回はもっとすごいよ。
数字でも文字でも何でも詰め込める魔法の箱、「リスト(list)」の登場だね!
「買い物リスト」とか「ToDoリスト」とか、現実世界でもリストは大活躍でしょ?Pythonでも最強のパートナーになるから、仲良くなっておこう!📝💕

公式の「ここがわかりにくい」:ミュータブルって結局なに?

公式チュートリアルには、リストの説明でまたしてもこんな言葉が出てくるよ。

文字列とは異なり、リストは mutable (変更可能) な型です。

前回、文字列は「イミュータブル(変更不可、ロックされてる)」って習ったよね。
リストはその逆!ミュータブル(変更可能、ロックされてない)」なんだ。
つまり、中身を自由に入れ替えたり、書き換えたりできるってこと!これがリストの最大の強みだよ💪

1. リストの作り方:角括弧 [ ] で囲むだけ!

要するにこれは「複数のデータをひとまとめにする箱」だよ!

リストを作るのは超カンタン。データをカンマ , で区切って、角括弧 [ ] で囲むだけ!

🐍 サンプルコードを見る(クリックで開閉)
# 数字のリスト
squares = [1, 4, 9, 16, 25]
print(squares)

# 文字のリスト
fruits = ['apple', 'banana', 'orange']
print(fruits)

# 実は...中身の型がバラバラでもOK!(あんまりやらないけどw)
mixed = [1, 'apple', 3.14, 'Python']
print(mixed)
💻 実行結果:
[1, 4, 9, 16, 25]
[‘apple’, ‘banana’, ‘orange’]
[1, ‘apple’, 3.14, ‘Python’]

2. 取り出し方は「文字列」と同じ!

ここがPythonのいいところ!覚えることが少ない!
前回の「文字列」で覚えたインデックス(番号指定)スライス(範囲指定)が、リストでも全く同じように使えるよ!

  • list[0]:最初の要素(0番目)
  • list[-1]:最後の要素
  • list[1:3]:1番目から3番目の手前まで(スライス)
🐍 サンプルコードを見る(クリックで開閉)
squares = [1, 4, 9, 16, 25]

# インデックス(0番目)
>>> squares[0]
1

# インデックス(最後)
>>> squares[-1]
25

# スライス(最後から3つ分)
>>> squares[-3:]
[9, 16, 25]

# 連結(+)もできる!新しいリストが作られるよ
>>> squares + [36, 49, 64]
[1, 4, 9, 16, 25, 36, 49, 64]
💻 実行結果:
(コード内にコメントとして記載)

3. 【試験頻出】リストは書き換えられる!(Mutable)

要するにこれは「中身を上書き保存できる機能」だよ!

文字列では word[0] = 'A' みたいな書き換えがエラーになったよね。
でもリストなら…できちゃうんです!

🐍 書き換え実験コード(クリックで開閉)
cubes = [1, 8, 27, 65, 125]
# あれ? 4の3乗は 64 なのに、65 になってる!(バグ発見!)

# 誤植を修正しよう!
# インデックス3(0,1,2,3番目)を正しい値に上書き
cubes[3] = 64

print(cubes)
💻 実行結果:
[1, 8, 27, 64, 125]
(バッチリ修正されたね!)

スライスで一気に書き換えも可能!

これ、試験でよく出る「魔法のテクニック」だよ。
スライスを使えば、リストの一部を「ごっそり入れ替える」ことも、「削除する」こともできるの!

🐍 スライス代入の実験(クリックで開閉)
letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g']

# 'c', 'd', 'e' (インデックス2〜5の手前) を大文字に入れ替え
letters[2:5] = ['C', 'D', 'E']
print(letters)

# 'C', 'D', 'E' を削除(空のリストで上書き)
letters[2:5] = []
print(letters)

# 全部削除して空っぽにする
letters[:] = []
print(letters)
💻 実行結果:
[‘a’, ‘b’, ‘C’, ‘D’, ‘E’, ‘f’, ‘g’]
[‘a’, ‘b’, ‘f’, ‘g’]
[]

4. リストの中にリスト!?(入れ子/ネスト)

リストの要素として、別のリストを入れることもできるよ。
「引き出しの中に、さらに小さい箱が入ってる」イメージだね!

🐍 サンプルコードを見る(クリックで開閉)
a = ['a', 'b', 'c']
n = [1, 2, 3]

# リストの中にリストを入れる
x = [a, n]

print(x)
# [['a', 'b', 'c'], [1, 2, 3]]

# 0番目の要素(つまりリストa)を取り出す
print(x[0])
# ['a', 'b', 'c']

# 0番目の要素(リストa)の、さらに1番目を取り出す
print(x[0][1])
# 'b'
💻 実行結果:
[[‘a’, ‘b’, ‘c’], [1, 2, 3]]
[‘a’, ‘b’, ‘c’]
b

x[0][1] みたいに、インデックスを続けて書くことで、奥の箱までアクセスできるんだね!

試験に出る!要注意ポイント

今回の範囲で、Python 3 エンジニア認定基礎試験によく出るポイントをまとめたよ!📝

① 文字列 vs リスト(変更可能かどうか)

性質 a[0] = 'x'
文字列 (str) Immutable (変更不可) エラー (TypeError)
リスト (list) Mutable (変更可能) OK (書き換わる)

この表は丸暗記レベルで重要!「どっちがエラーになりますか?」って問題が出たら、この表を思い出してね!

len() 関数

文字列と同じく、len() 関数で「要素の数」を調べられるよ。
リストの中にリストが入っている場合(入れ子)、中のリストは「1個の要素」としてカウントされるから注意!

x = [['a', 'b'], [1, 2, 3]]
len(x)  # 結果は 2 だよ!(リストが2つ入ってるから)
💡 管理人の失敗エピソード
リストをコピーしようとして list_b = list_a って書いたら、list_b を変更したのに list_a まで変わっちゃって大パニックになったことがあるよ😱
これは「コピー」じゃなくて「同じ箱に別の名札を付けただけ」だからなんだ。
完全にコピーしたいときは list_b = list_a[:] (スライスで全範囲指定) を使うのが基本テクニックだよ!これ、試験には出ないけど実務で死ぬほど大事!

理解度チェック!ミニクイズ

さあ、リストの基本はバッチリかな?
試験レベルの問題でチェックしてみよう!🔍

以下のコードを実行したとき、a の中身はどうなる?
a = [1, 2, 3, 4, 5]
a[1:3] = [8, 9]
正解: [1, 8, 9, 4, 5]

解説:
a[1:3] はインデックス1と2の要素(つまり 2, 3)を指すよ。
そこに [8, 9] を代入するから、2, 38, 9 に置き換わるんだね。

以下のコードを実行するとどうなる?
s = "Python"
s[0] = "J"
正解: エラー (TypeError)

解説:
引っかからなかった?これはリストじゃなくて「文字列」の問題!
文字列はイミュータブル(変更不可)だから、代入しようとするとエラーになるよ。

a = [10, 20, 30] のとき、len(a) の結果は?
正解: 3

解説:
これはサービス問題!リストに入っている要素の個数を数えるだけ。
10, 20, 30 の3つが入っているから、答えは 3 だよ。

まとめ:次回への引き

今回は「リスト」について解説したよ!
データをまとめて扱えるようになると、一気にプログラミングの幅が広がるよね。

次回からは、いよいよプログラミングの醍醐味、「動き」を作っていくよ。
テーマは「条件で動きを変える:if文の作り方」
「もし〇〇なら××する」っていう条件分岐ができるようになると、プログラムが賢くなるよ!お楽しみに!👋✨

出典: Python公式チュートリアル
Copyright © 2001-2026 Python Software Foundation. Licensed under the PSF License.

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