やっほー!国内の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]
解説:
a[1:3] はインデックス1と2の要素(つまり 2, 3)を指すよ。
そこに [8, 9] を代入するから、2, 3 が 8, 9 に置き換わるんだね。
以下のコードを実行するとどうなる?
s = "Python"
s[0] = "J"
解説:
引っかからなかった?これはリストじゃなくて「文字列」の問題!
文字列はイミュータブル(変更不可)だから、代入しようとするとエラーになるよ。
a = [10, 20, 30] のとき、len(a) の結果は?
解説:
これはサービス問題!リストに入っている要素の個数を数えるだけ。
10, 20, 30 の3つが入っているから、答えは 3 だよ。
まとめ:次回への引き
今回は「リスト」について解説したよ!
データをまとめて扱えるようになると、一気にプログラミングの幅が広がるよね。
次回からは、いよいよプログラミングの醍醐味、「動き」を作っていくよ。
テーマは「条件で動きを変える:if文の作り方」。
「もし〇〇なら××する」っていう条件分岐ができるようになると、プログラムが賢くなるよ!お楽しみに!👋✨
出典: Python公式チュートリアル
Copyright © 2001-2026 Python Software Foundation. Licensed under the PSF License.






