【第14回Python基礎講座】変更できないリスト!?タプルの世界

本ページはプロモーションが含まれています
【第14回Python基礎講座】変更できないリスト!?タプルの世界
国内のAI狂い

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

第14回へようこそ!今回は「リストの親戚」とも言われる「タプル(tuple)」について解説するよ。
「リストがあるならそれで良くない?」って思うよね?でも、タプルには「中身を絶対に書き換えられない」という鉄の掟があるの。
この「不自由さ」こそが、プログラムの安全を守る鍵なんだよ!🔐✨

公式の「ここがわかりにくい」:カンマが本体!?

公式チュートリアルには、初心者を混乱させる衝撃の事実が書いてあるよ。

タプルの構築で実質的に役割を果たしているのは カンマ であり、丸括弧ではありません。

「ええっ!?タプルと言えば (1, 2, 3) みたいに丸括弧 () をつけるものじゃないの!?」
実は違うんだね。Pythonにとって大事なのは「カンマ ,」で区切られていること。
丸括弧は、人間が見やすくするため(あと式の優先順位のため)の「飾り」に近いんだ。この真実を知ってると、試験の引っかけ問題に強くなるよ!

1. タプルの作り方:リストとの違い

要するにこれは「書き換え禁止(Read Only)のリスト」だよ!

タプルは、複数のデータをまとめるデータ構造だよ。リストと似てるけど、記号が違う!

  • リスト: [1, 2, 3] (角括弧)
  • タプル: (1, 2, 3) (丸括弧)… または 1, 2, 3 (カッコなし!)
🐍 サンプルコードを見る(クリックで開閉)
# カッコあり
t1 = (10, 20, 30)
print(f"t1: {t1}, 型: {type(t1)}")

# カッコなし(これもタプル!)
t2 = 10, 20, 30
print(f"t2: {t2}, 型: {type(t2)}")

# 空っぽのタプルを作る時だけはカッコが必要
empty = ()
print(f"empty: {len(empty)}")
💻 実行結果:
t1: (10, 20, 30), 型: <class ‘tuple’>
t2: (10, 20, 30), 型: <class ‘tuple’>
empty: 0

2. 鉄の掟:タプルはイミュータブル!

リストとの最大の違いは、作ってしまった後は変更できない(イミュータブルということ。
「追加」も「削除」も「書き換え」もできないよ!

🐍 エラー実験コード(クリックで開閉)
t = (1, 2, 3)

# 参照(見るだけ)はOK
print(t[0])  # -> 1

# 書き換えようとすると...?
try:
    t[0] = 100
except TypeError as e:
    print(f"エラー発生!: {e}")

# appendとかもないよ!
# t.append(4)  # AttributeErrorになる
💻 実行結果:
1
エラー発生!: ‘tuple’ object does not support item assignment

「不便じゃん!」って思うかもしれないけど、
「辞書のキーに使える(リストは使えない)」とか「うっかり変更されるのを防げる」っていうメリットがあるんだよ。

3. 複数の値を一気に扱うテクニック

要するにこれは「複数の変数を一気に代入する便利技」だよ!

第11回でも少し触れたけど、タプルを使うと変数の代入がめちゃくちゃスタイリッシュになるよ。

アンパック(Unpacking)

タプルの中身を、複数の変数に「分配」すること。

t = (1, 2, 3)
x, y, z = t
# x=1, y=2, z=3 になる!

値の交換(スワップ)

他の言語だと「一時変数」を使って3行くらい書く処理が、Pythonなら1行!

a = 10
b = 20
a, b = b, a  # 右辺で(20, 10)というタプルが作られ、左辺でアンパックされる
# a=20, b=10 になる!

実はこれ、裏側でタプルの「パック(右辺)」「アンパック(左辺)」が行われているんだね。

4. 【試験頻出】要素が1個だけのタプル

ここ、試験で**一番引っかかる人が多いポイント**だよ!🚨
要素が1個だけのタプルを作りたい時、どう書く?

【重要】 1個だけの時はカンマを忘れるな!
(1) → ただの数字の 1(int型)
(1,) → タプル(tuple型)
🐍 比較実験コード(クリックで開閉)
# カンマなし
single_int = (100)
print(f"値: {single_int}, 型: {type(single_int)}")

# カンマあり
single_tuple = (100,)
print(f"値: {single_tuple}, 型: {type(single_tuple)}")
💻 実行結果:
値: 100, 型: <class ‘int’>
値: (100,), 型: <class ‘tuple’>

カッコは計算の優先順位を変えるためにも使われるから、Pythonは (100) を「カッコに入った数字」と判断しちゃうんだね。
「タプルの本体はカンマ!」って覚えておけば間違いないよ!

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

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

① タプルの中にリストがある場合

タプル自体は変更不可だけど、「タプルの中に入っているリスト」は変更可能なんだ(ややこしい!)。

t = (1, [2, 3], 4)
# t[1] = ... はエラーだけど
t[1][0] = 99  # これはOK!
# t は (1, [99, 3], 4) になる

「不変なのは『参照(場所)』であって、参照先の中身までは保証しない」ってことだね。

② 比較のルール

タプル同士(やリスト同士)の比較は、「先頭から順番に」行われるよ。
(1, 2, 3) < (1, 2, 4)True
最初の要素が同じなら次、それも同じなら次…と勝ち負けが決まるまで比較が進むよ。

💡 管理人の失敗エピソード
関数の戻り値で return a, b って書くとタプルで返ってくるんだけど、それを受け取る時に result = func() って書いちゃって、
「あれ?resultがタプルになってる!aだけ欲しいのに!」ってなったことあるよ😅
戻り値が複数の時は res_a, res_b = func() ってアンパックして受け取るのがスマートだね!

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

タプルの特性、理解できたかな?
試験レベルの問題でチェックしてみよう!🔍

次のうち、型が tuple になるものはどれ?
  1. (1)
  2. [1]
  3. 1,
▼ クリックで正解を表示
正解: 3. 1,

解説:
1は整数(int)、2はリスト(list)だよ。
3はカッコがないけど、カンマがあるから「要素数1のタプル」になるんだ!これがタプルの正体!

次のコードを実行するとどうなる?
t = (1, 2, 3)
t[0] = 10
  1. t が (10, 2, 3) になる
  2. t が (10, 2, 3) という新しいタプルになる
  3. TypeError が発生する
▼ クリックで正解を表示
正解: 3. TypeError が発生する

解説:
タプルはイミュータブル(変更不可)だから、要素への代入はできないよ。

次の比較式の評価結果は?
(1, 2, 3) < (1, 2, 100)
  1. True
  2. False
  3. エラー
▼ クリックで正解を表示
正解: 1. True

解説:
0番目(1 vs 1)は同じ、1番目(2 vs 2)も同じ。
2番目(3 vs 100)で、3の方が小さいから、全体として「左の方が小さい」= True になるよ。

まとめ:次回への引き

今回は「タプル」について解説したよ!
「カッコよりカンマが偉い」「書き換えられないから安全」ってことを覚えておけばOK👍

次回は、タプルと並ぶ超重要なデータ構造!
テーマは「重複なし!順序なし!集合(セット)の世界」だよ。
「このリストの中に同じデータがいっぱいあるから、1個にまとめたい!」なんて時に、魔法のように一瞬で解決してくれるのがセット。
数学の「集合」が苦手だった人も、Pythonのセットは大好きになるはず!お楽しみに!👋✨

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

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