(1時間4,000円の伴走型ビデオチャット指導も受付中!)
Pythonのデータ型を基礎から理解する:初心者向けの徹底解説
![]()
【Yuki】
Hirokiくん、こんにちは。今日はPythonを学ぶ上でとても大切な「データ型」について、一緒に勉強していきましょう。
プログラムを書いていると、数字を足したり、文字を表示したり、色々なことをしますよね。その一つ一つの要素がどのような種類のものなのかを区別するのが「データ型」なんです。
![]()
【Hiroki】
Yukiさん、よろしくお願いします!
データ型という言葉は聞いたことがありますが、なんとなく「数字」とか「文字」とか、そういう区別があるということでしょうか?
![]()
【Yuki】
ええ、その通りです。ただ、コンピュータは人間ほど柔軟ではないので、私たちが「これは数字だよ」「これは文字だよ」とはっきり教えてあげないと、うまく処理ができないことがあるんです。
少し難しいかもしれませんが、ゆっくり説明していくので大丈夫だと思います...。
データ型とは何か?
![]()
【Yuki】
まず、なぜデータ型が必要なのかを考えてみましょう。
例えば、10 + 20 という計算なら、答えは 30 になりますよね。でも、もしこれが文字の「10」と「20」だったとしたら、それをくっつけて「1020」と表示したい場合もあるかもしれません。
このように、「そのデータに対してどのような操作ができるか」を決めるのがデータ型の役割なんです。
![]()
【Hiroki】
なるほど。同じ「10」でも、計算したい数字なのか、ただの文字なのかによって、コンピュータの扱いが変わるということですね。
![]()
【Yuki】
はい、そうです。Pythonにはいくつか主要なデータ型があります。まずは基本的なものから順番に見ていきましょう。
数値を扱う:整数型(int)と浮動小数点型(float)
![]()
【Yuki】
一番よく使うのは数値ですね。Pythonでは、整数を扱う「int型(整数型)」と、小数を扱う「float型(浮動小数点型)」に分かれています。
# 整数型 (int)
age = 22
count = -5
# 浮動小数点型 (float)
price = 198.5
pi = 3.14159
![]()
【Hiroki】
整数と小数は別物として扱われるんですね。
![]()
【Yuki】
そうなんです。例えば、10 は int型ですが、10.0 と書くと float型として扱われます。
Pythonは賢いので、10 + 2.5 のように整数と小数を混ぜて計算すると、自動的に結果を float型(12.5)にしてくれるんですよ。
でも、厳密に型が分かれていることは意識しておいたほうがいいかもしれません。
文字を扱う:文字列型(str)
![]()
【Yuki】
次に、名前や文章などのテキストを扱う「str型(文字列型)」です。
Pythonでは、文字をシングルクォーテーション ' か、ダブルクォーテーション " で囲んで表現します。
name = "Hiroki"
message = 'こんにちは、Pythonの世界へ!'
![]()
【Hiroki】
クォーテーションで囲むのを忘れるとどうなりますか?
![]()
【Yuki】
囲むのを忘れてしまうと、Pythonはそれを「変数名」だと勘違いしてしまって、エラーが出てしまうと思います...。
また、文字列型同士を + でつなげることもできるんですよ。
first_name = "Python"
last_name = "学習中"
full_text = first_name + last_name
# 結果は "Python学習中" になります
![]()
【Hiroki】
数字の足し算とは意味が変わるんですね!
![]()
【Yuki】
その通りです。だからこそ、型を意識することが大切なんです。
真偽を判定する:論理型(bool)
![]()
【Yuki】
次は、プログラミングの条件分岐で欠かせない「bool型(論理型)」です。
これは、「True(真)」か「False(偽)」の2つの値しか持ちません。
is_active = True
has_error = False
![]()
【Hiroki】
「はい」か「いいえ」だけで答えるようなものですね。
![]()
【Yuki】
ええ。例えば「もしスコアが80点以上なら合格(True)」というような、YES/NOの判定に使います。
比較演算子を使うと、この bool型が結果として返ってくるんですよ。
score = 85
result = score >= 80
# result は True になります
複数のデータをまとめる:リスト型(list)
![]()
【Yuki】
ここまでは1つの値を扱う型でしたが、複数の値をまとめて管理したいこともありますよね。
そんな時に便利なのが「list型(リスト型)」です。
fruits = ["apple", "banana", "cherry"]
numbers = [1, 2, 3, 4, 5]
mixed = [10, "hello", True] # 異なる型を混ぜることもできます
![]()
【Hiroki】
カゴの中に色々なものを入れているイメージでしょうか。
![]()
【Yuki】
素敵な表現ですね。リストの中身には、0から始まる「インデックス番号」を使ってアクセスできます。
fruits[0] と書けば、最初の "apple" を取り出すことができるんです。
リストは後から中身を書き換えたり、追加したりできるので、とても柔軟に使えますよ。
変更できないリスト:タプル型(tuple)
![]()
【Yuki】
リストと似ていますが、一度作ったら中身を変更できない「tuple型(タプル型)」というものもあります。
丸括弧 () で囲んで作ります。
coordinates = (35.6895, 139.6917) # 緯度と経度など
![]()
【Hiroki】
どうしてわざわざ「変更できない」ものを作るんですか? 変更できたほうが便利そうな気がします。
![]()
【Yuki】
そう思うのも無理はありません...。
でも、プログラムを書いていると「絶対に書き換わってほしくないデータ」というのも出てくるんです。
タプルを使えば、間違えてデータを書き換えてしまうミスを防げますし、リストよりも少しだけ動作が速いというメリットもあるんですよ。
キーと値で管理する:辞書型(dict)
![]()
【Yuki】
次は、とても強力な「dict型(辞書型)」です。
これは「キー(名前)」と「値(中身)」をペアにして管理するものです。
user = {
"name": "Hiroki",
"age": 17,
"email": "hiroki@example.com"
}
![]()
【Hiroki】
本物の辞書みたいに、「単語」と「その説明」がセットになっているんですね。
![]()
【Yuki】
はい。user["name"] と指定すれば、"Hiroki" という値が取り出せます。
大量のデータの中から、特定の名前に関連付けられた情報を探すときには、リストよりもずっと効率的なんです。
重複を許さない:集合型(set)
![]()
【Yuki】
少し特殊なのが「set型(集合型)」です。
これは数学の「集合」と同じで、重複した値を持ちません。
unique_numbers = {1, 2, 3, 3, 2, 1}
# これを中身を見ると {1, 2, 3} だけになっています
![]()
【Hiroki】
勝手に重複を消してくれるんですか?
![]()
【Yuki】
そうなんです。アンケート結果の重複を削除したり、2つのグループに共通する要素を探したりするのに便利かもしれません。
ただし、リストのように「順番」は保証されないので、そこだけ注意が必要ですね。
Pythonの大きな特徴:動的型付け
![]()
【Yuki】
ここで、Pythonの大きな特徴についてお話ししますね。
他のプログラミング言語(例えばC言語やJavaなど)では、変数を作るときに「この変数は整数用です!」と厳密に宣言しなければならないことが多いんです。
でもPythonは、代入された値を見て、自動的に型を決めてくれます。 これを「動的型付け」と呼びます。
![]()
【Hiroki】
それは初心者にとっては楽でいいですね!
![]()
【Yuki】
ええ、とても書きやすいと思います。
でも、途中で違う型の値を代入することもできてしまうので、注意しないと思わぬところでエラーが出るかもしれません...。
今、変数が何の型なのかを知りたいときは、type() という関数を使うと調べることができますよ。
x = 10
print(type(x)) # <class 'int'> と表示されます
x = "Hello"
print(type(x)) # <class 'str'> と表示されます
型の変換(キャスト)
![]()
【Hiroki】
さっきの「数字の10」を「文字の10」に変えたいときは、どうすればいいんでしょうか?
![]()
【Yuki】
いい質問ですね。その操作を「型変換(キャスト)」と言います。
それぞれの型の名前の関数を使うことで、変換できるんです。
num = 100
text_num = str(num) # 整数から文字列へ
price_text = "500"
price_int = int(price_text) # 文字列から整数へ
![]()
【Hiroki】
なるほど、int() や str() で囲めばいいんですね。
![]()
【Yuki】
はい。ただ、int("こんにちは") のように、数字として解釈できない文字を無理やり整数にしようとするとエラーになってしまうので、そこは気を付けてくださいね。
Noneという特別な値
![]()
【Yuki】
最後に、「None型(NoneType)」についても触れておきます。
これは「値が何もないこと」を表すための、Python特有の特別な値です。
result = None
![]()
【Hiroki】
「0」や「空の文字列」とは違うんですか?
![]()
【Yuki】
ええ、違います。
「0」は「0という数値」ですし、空の文字列 "" は「長さが0の文字列」です。
None は、「データそのものがまだ存在しない」とか「何も返さない」という状態を指すために使われます。
これからプログラムを組んでいくと、初期値としてとりあえず None を入れておく、といった場面によく出会うと思います。
まとめ
![]()
【Hiroki】
今日はたくさんの型を学びましたね!
int, float, str, bool, list, tuple, dict, set, None...。
一度に全部覚えるのは大変そうですけど、どれも重要なんだと感じました。
![]()
【Yuki】
そうですね、一度に完璧に覚えようとしなくても大丈夫だと思います。
実際にコードを書いていくうちに、「あ、これはリストより辞書のほうが扱いやすいな」といった感覚が自然に身についてくるはずです。
![]()
【Hiroki】
少しずつ使いこなせるようになりたいです。Yukiさん、丁寧に教えてくれてありがとうございました!
![]()
【Yuki】
どういたしまして。Hirokiくんが一生懸命聞いてくれたので、わたしも説明しやすかったです。
もし途中でわからなくなったら、いつでも聞いてくださいね。
基礎をしっかり固めておけば、この先の学習もきっとスムーズに進むと思います。
参考資料: - Python 公式ドキュメント: 組み込み型 - Python チュートリアル: データ構造
この記事では基礎を解説しましたが、実務においては「もっと複雑なデータを扱いたい」「独自のシステムに組み込みたい」といった、個別の課題に直面することも多いはずです。
「自分で書く時間は最小限に抑え、プロの品質でツールを完成させたい」という方は、ぜひ一度ご相談ください。
- 専門家の知見に基づいた、保守性の高いコード設計
- AIの専門家による、Gemini API等の最新AIを組み合わせた高度な自動化
- ChatGPT等が生成したコードのデバッグ・最適化
「教わる」だけでなく「形にする」パートナーとして、フリーランスエンジニアのmei_13が最短ルートでの解決をサポートします。
初心者から始められるPythonレッスン
● 月額4,000円で質問し放題!!
● 完全オンライン
● 翌日までには必ず返信
● 挫折しない独自の学習メソッド
● 圧倒的高評価!!
● テキストベースで時間を選ばない
● 4,000円/60分の伴走型ビデオチャット指導も可能
● 高品質なサンプルコード
詳細はこちら

