3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【実は知らない】Pythonのlistとtupleの意外な違い10選

Last updated at Posted at 2025-04-08

【実は知らない】Pythonのlistとtupleの意外な違い10選

Pythonを使っていると、listtuple を見かけることがよくありますよね。
「リストは変更できて、タプルはできない」くらいは知っていても、
実はそれ以外にもたくさん違いがあるんです。

この記事では、初心者の方にもわかりやすく
listtuple の「意外と知られてない違い」を10個にまとめました!


🔰 まずはざっくり違いをおさらい

項目 list ([]) tuple (())
変更可能か ✅ 変更できる ❌ 変更できない(イミュータブル)
記述方法 [1, 2, 3] (1, 2, 3)
主な用途 データの追加・更新がある場面 固定データ、辞書のキーなど

🧠 違い1:変更可能かどうか

lst = [1, 2, 3]
lst[0] = 10  # OK!

tup = (1, 2, 3)
tup[0] = 10  # ❌ TypeError

タプルは一度作ったら 中身を変更できません
この違いが一番有名ですね。


🧠 違い2:処理速度がちがう(タプルの方が速い)

import timeit

print(timeit.timeit("[1, 2, 3, 4, 5]", number=1000000))
print(timeit.timeit("(1, 2, 3, 4, 5)", number=1000000))

タプルの方が ちょっとだけ速い
理由は「変更不可なので最適化されやすい」から。


🧠 違い3:辞書のキーに使えるかどうか

d = {}
d[[1, 2]] = 'list'  # ❌ TypeError: unhashable type: 'list'

d[(1, 2)] = 'tuple'  # ✅ OK

リストは 辞書のキーにできません
タプルは ハッシュ可能(不変)なので使えます


🧠 違い4:括弧を省略できるのはタプルだけ

x = 1, 2, 3
print(type(x))  # <class 'tuple'>

()がなくても、カンマがあればタプル。これ初心者あるあるな罠!


🧠 違い5:1要素タプルはカンマ必須

t = (1)    # int型になる
t = (1,)   # tuple型になる!

カッコだけではダメで、カンマがないとタプルにならない


🧠 違い6:リストはコピーしても同じ場所を指すことがある

a = [1, 2, 3]
b = a
b[0] = 100
print(a)  # [100, 2, 3] ←変わっちゃう!

# タプルはそもそも変更できないから安心

「参照渡し」に注意。コピーの仕方に気をつけましょう。


🧠 違い7:メモリ使用量がタプルの方が少ない

import sys
print(sys.getsizeof([1, 2, 3]))  # 88
print(sys.getsizeof((1, 2, 3)))  # 72

変更できないぶん、タプルは軽量
大量のデータを扱うときは差が出ます。


🧠 違い8:多重代入に向いてるのはタプル

x, y = (10, 20)  # ✅ OK
x, y = [10, 20]  # これもOKだが、タプルの方が自然

一時的な複数データの受け渡しは タプルがしっくりきます。


🧠 違い9:関数の戻り値でよく使われるのはタプル

def get_user():
    return "name", 20  # これは tuple を返してる

name, age = get_user()

return で複数の値を返すときは、タプルが暗黙的に使われます


🧠 違い10:「リストの中のタプル」「タプルの中のリスト」使い分けのヒント

list_of_tuples = [(1, 2), (3, 4)]  # ✅
tuple_of_lists = ([1, 2], [3, 4])  # ⚠️ 中身は変更できる

「全体の構造を変えないけど、中身だけ変える」
そんなときにこの使い分けが便利です。


📌 おわりに

「listとtupleの違い」は、知ってるようで意外と知らない落とし穴が多いです。
特に初心者のうちは「なんとなく使ってる」ことも多いですが、
この違いを理解しておくと、コードの バグ防止パフォーマンス改善 にもつながります!


ご感想・コメントなど大歓迎です!
他にも「Pythonのこれ気になる!」があれば教えてください 😄

3
3
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?