Menu
日本語

Pythonのデータ型入門:int・str・list・dict を総まとめ

Pythonの組み込みデータ型(数値・文字列・ブール・None・リスト・タプル・セット・辞書)を、具体例と使い分けのポイントと一緒に整理します。

そもそも「型」って何のためにあるの?

型(type)」というのは、その値がどう振る舞うかを Python に伝えるためのカテゴリです。整数どうしを足せば計算になり、文字列どうしを足せば連結になる。一方で文字列と整数を足そうとするとエラーになります。値にどんな操作ができるかは、その型によって決まるというわけです。

Python には、よく使われる組み込みの python データ型 が一通り揃っています。中でも int・float・str・bool の4つは、ほぼどんなプログラムを書いても登場する定番です。それ以外の型は、データをまとめて扱いたくなったタイミングで出てきます。

数値型:int と float

Python の数値には2種類あって、書き方によってどちらの型になるかが自動で決まります:

main.py
Output
Click Run to see the output here.

小数点がなければ int、小数点があれば float になります。計算では両者を自由に混ぜられますが、float が絡む演算の結果は必ず float になります。

main.py
Output
Click Run to see the output here.

Pythonの整数(int)はメモリが許す限り無制限に大きくできます。32ビットや64ビットの上限もなければ、オーバーフローもありません。2 ** 1000 を計算しても、全桁がそのまま返ってきます。

一方、浮動小数点数(float)は一般的なIEEE 754に従うので、おなじみの落とし穴がいくつかあります。

main.py
Output
Click Run to see the output here.

これを実行すると 0.3 ではなく 0.30000000000000004 と表示されます。これは Python のバグではなく、どの言語でも共通する二進浮動小数点数の仕様です。お金の計算など、正確な小数が必要な場面では decimal モジュールを使いましょう。それ以外の用途なら、表示時に丸めるだけで十分なことがほとんどです。

文字列型(str)

文字列は文字の並びです。シングルクォートでもダブルクォートでも囲めます。Python はどちらでも気にしません。ただし、開きと閉じのクォートは揃えてくださいね。

main.py
Output
Click Run to see the output here.

三重引用符で囲んだ文字列(""" ... """)は複数行にまたがって書けます。

main.py
Output
Click Run to see the output here.

文字列のAPIはかなり豊富で、使いこなせるようになるには少し時間がかかります。スライス、.upper().split().replace() といったメソッド、それから f"Hello, {name}" のように書けるf文字列など、覚えることがたくさんあります。文字列については次のページでじっくり解説します。

bool型(真偽値)

真偽値は TrueFalse の2つだけで、先頭を必ず大文字にして書きます。比較演算の結果は真偽値として返ってきます。

main.py
Output
Click Run to see the output here.

内部的には、TrueFalse はそれぞれ 10 そのものとして扱われます。なので、いくつの条件が True だったかを数えたいときは、ブール値をそのまま足し算できてしまいます。

main.py
Output
Click Run to see the output here.

None:値が存在しないことを表す

None は、Python で「値がない」ことを示すための特別な値です。明示的に return を書かない関数は、自動的に None を返します。プレースホルダーとして使うのもよくあるパターンです。

main.py
Output
Click Run to see the output here.

None との比較は == None ではなく、is Noneis not None で書くのが慣例です。is は同一性(identity)を比較するので、ここで本当に確認したいのはまさにそれなんです。

リスト・タプル・セット・辞書

Python に組み込みで用意されているコレクション型は、この 4 つです。それぞれ専用のページで詳しく扱いますが、まずは見分けがつくように、ざっくりとした特徴だけ押さえておきましょう。

main.py
Output
Click Run to see the output here.

使い分けの目安はこんな感じです。

  • リスト (list): 中身が変わることを前提にした並び。追加・削除・ソート、なんでもOK。
  • タプル (tuple): 変えたくない並び。(x, y) 座標のように、形が決まったレコードによく使います。
  • セット (set): 重複があると困る場面向けの、ユニークな要素の集まり。
  • 辞書 (dict): キーで引くためのデータ構造。JSON っぽい形ですね。

Python の型変換

リスクのある型変換を Python が勝手にやってくれることはありません。整数を文字列にしたり、文字列を数値にしたりするのは、こちらから明示的にお願いする必要があります。

main.py
Output
Click Run to see the output here.

変換が意味をなさないとき――たとえば int("hello") のようなケース――Python は ValueError を投げて、何を渡したのかまで教えてくれます。エラーが出たら、原因を読んで直して、先に進みましょう。

型を確認する方法

押さえておきたいのは、次の2つです。

main.py
Output
Click Run to see the output here.

type() はREPLでサッと確認したいときに便利です。一方、実際のコードで使うなら isinstance() の出番。継承とも相性が良く、複数の型をまとめてチェックできるのが強みです。

ちょっとした実験タイム

まずは下のコードをそのまま動かしてみてください。慣れてきたら値をいくつか書き換えて、型がどう変わるか観察してみましょう:

main.py
Output
Click Run to see the output here.

for をまだ理解していなくても大丈夫です。これから学んでいきますが、この例でPythonの組み込みデータ型の雰囲気が一気につかめるはずです。

データに合った型を選ぶ

今すぐすべての型を暗記する必要はありません。ただし、コードの中で見かけたときに「これはあの型だな」と気づけること、そして自分でデータを作るときに適切な型を選べるようになることは大事です。「中身は固定?それとも変わる?」「重複はアリ?ナシ?」「取り出すときはキーで探す?それとも位置で?」——この4つの問いを押さえておけば、9割のケースでコレクション型は自然と決まります。

次は文字列を深掘りしていきましょう。ほぼすべてのプログラムで触れることになる、もっとも出番の多いデータ型です。

よくある質問

Pythonの主なデータ型は何ですか?

数値型(intfloat)、文字列(str)、ブール(bool)、None、そしてコレクション系の4つ(listtuplesetdict)が基本です。Pythonのコードで目にするものは、ほぼこれらに bytescomplexfrozenset などを加えた組み合わせでできています。

値の型を調べるにはどうすればいい?

type() に渡せばOKです。type(42) なら <class 'int'>type('hi') なら <class 'str'> が返ってきます。True/Falseで判定したいときは isinstance(value, int) を使いましょう。サブクラスも拾ってくれるので、こちらのほうが柔軟です。

Pythonは静的型付け? それとも動的型付け?

動的型付けの言語です。変数はどんな型の値でも指せますし、同じ変数の型が途中で変わってもかまいません。変数を宣言するときに型を決めて以降変更できないJavaやC++とは、ここが大きく違うポイントです。

Coddyでコードを学ぼう

始める