【Python初学者】データ型とは?種類と特徴をわかりやすく解説!

Python初学者向けデータ型と特徴

この記事は、プログラミング初学者が学びのアウトプットを兼ねてまとめた内容です。

どうも、わだです

この記事では、「Pythonの基本的なデータ型とそれぞれの特徴」
について、初学者目線で解説します。

目次

 変数や値がどんな種類のデータを持っているのかを表すものです。
 基本的なデータ型には次ようなものがあります。

分類データ型特徴
数値型int, float,
comprex
整数, 浮動小数点数,
複素数
x = 5
y = 4 + 3i
文字列型str文字列“はじめまして”
‘wada’
ブール型bool真偽値True/ False
シーケンス型list,
tuple
順序をもつ要素の集まり
重複OK
[“apple”, “banana”, “cherry”, “banana”]
(1, 2, 3)
集合型set重複を持たない要素の集まり{“apple”, “banana”, “cherry”}
辞書型dictキーと値のペア{“name”: “wada”, “age”: 27}

◼︎int: 整数

x = 10
y = -5

◼︎float: 浮動小数点

a = 3.14
b = -0.5

◼︎complex: 複素数

「a + bj」の形で表します。aを実部bを虚部といいます。
実部と虚部をそれぞれ出力するには、以下のように書きます。

z = 5 + 6j

print(z.real) #出力: 5.0
print(z.imag) #出力: 6.0

数値型は算術演算に使用できます(算術演算についてはこちらの記事へどうぞ)。

文字の連なったものを文字列と呼びます。
文字列はダブルクォーテーション(”)シングルクォーテーション(’)で囲います。

◼︎文字列の例

greeting = “Hello!” 
name = “wada”

◼︎文字列の連結

message = greeting + name
 
print(message)  #出力: Hello!wada
print("10")  #出力: 10

初学者わだの疑問〜師匠に聞いてみた〜

数値型で書いても、文字列型で書いても、結局出力結果は同じ10
何か違うの?

確かに一見すると同じように見えるけれど、数値と文字列は異なる型として認識されるよ。例を見ながら学んでいこう!

#数値型
print(10 + 10) #出力: 20

#文字列型
print(”10” + “10”) #出力: 1010

数値型は数値だから計算される。文字列型は文字として認識されるから、入力した文字がそのまま出力されるんだよ。
違いがわかったかな?

なるほど!でも、数値型とか文字列型とか、どうやって使い分けるの?

いいところに気づいたね!例えばこの先学ぶinput()関数というものがあって、ユーザーが入力した値を受け取るものなんだけど、返ってくる値は文字列型なんだよね。
表示するだけだったらそのままでもいいんだけど、その値を使って計算をしたいときは、数値型への変換が必要になるよ。
ちょっと難しいと思うから、頭の片隅にでも置いておくといいよ。

TrueまたはFalseどちらかの値しか持たない型です。条件分岐や論理演算で使用されます。

◼︎bool型の例

def is_even(n):
return n % 2 == 0

print(is_even(8)) #出力: True
print(is_even(5)) #出力: False

シーケンス型は、順序をもった複数の要素を扱えるデータ型のことです。
インデックス(番号)を使って要素にアクセスすることができます。

◼︎list: リスト

[ ]を使用します。
書き換えすることができます(次のタプルで詳しく解説します)。
順序を持ちます。各要素にアクセスするときは、0から始まる番号(インデックス)を使用します。

list_date = [1, 2, 3, 4, 5]

print(list_date[0]) #出力: 1
fruits = [”apple”, “banana”, “cherry”]

print(fruits[0]) #出力: apple
print(fruits[1]) #出力: banana
print(fruits[2]) #出力: cherry
print(fruits[3]) ⚠︎範囲外を指定するとエラーになります。

番号(インデックス)は 1つ目が02つ目が1… と数えるため、
n番目の要素にアクセスしたい場合はdate[n-1]と指定するところがポイントです。

fruits = [”apple”, “banana”, “cherry”]

print(fruits[-1]) #出力: cherry
print(fruits[-2]) #出力: banana
print(fruits[-3]) #出力: apple
nums = [10, 20, 30, 40, 50]  # インデックスは0, 1, 2, 3, 4

print(nums[1:3]) #出力: [20, 30]
print(nums[2:]) #出力: [30, 40, 50]
print(nums[:3]) #出力: [10, 20, 30]
print(nums[:-3]) #出力: [10, 20]

「 : 」の後ろ側に指定する位置は含まないということに注意が必要です。
[1:3]は2番目から3番目の要素(インデックス1,2だけ)にアクセスするということになります。
[2:]3番目以降の要素[:3]3番目までの要素[:-3]後ろから4番目までの要素を指します。

◼︎tuple: タプル

( )を使用します。
書き換えすることはできません(イミュータブルと言います)。
・タプルもインデックスを使って要素にアクセスすることができます(リストの解説を参照)。

tuple_date = (1, 2, 3, 4, 5)

print(tuple_date[0]) #出力: 1

初学者わだの思考〜師匠に聞いてみた〜

イミュータブルって、書き換えできないってどういうこと?

イミュータブルについてだね。それじゃあlistとtupleで比較してみよう!

# リストの例(書き換えできる)
list_date = [1, 2, 3, 4, 5]
list_date[3] = 100

print(list_date) #出力: [1, 2, 3, 100, 5]

# タプルの例(書き換えできない)
tuple_date = (1, 2, 3, 4, 5)
tuple_date[3] = 100

print(tuple_date) ⚠︎エラーになります。

タプルは一度作成すると、要素の追加・削除・変更ができないよ(エラー発生)。
タプルは変わらないデータや、辞書のキー(後述)、安全性を守りたいときに使用されるものだけれど、例えば座標(緯度と経度を使って場所を数字で示すもの)は、緯度・経度の数字が変わってしまうと示す場所が変わってしまうよね。そんな風にデータを変更してはいけないものに使ったりするよ。

なるほど。まだタプルを使う場合の具体的な例があんまりピンときていないけれど、タプルは書き換えできないってことが重要なんだね!

{ }で表します。
重複はできません(同じ値は1つしか持てません)。

a = {1, 2, 2, 3}

print(a) #出力: {1, 2, 3}

重複を許さない順序を持たないというところがポイントです。

fruits = {”apple”, “banana”, “cherry”}

print(fruits)
#出力 {'cherry', 'apple', 'banana'} や
    {'cherry', 'banana', 'apple'} となります。
a = {1, 2, 3}
a.add(4) # 追加
a.remove(2) # 削除(存在しないとエラーになる)
a.discord(10) # 削除(存在しなくてもエラーにならない)

print(a) #出力: {1, 3, 4}

セットはリストの重複を排除集合演算(和・差・積など)を使うときに使用されます。

a = {1, 2, 3, 4}
b = {3, 4, 5, 6}

print(a | b)  #和集合: {1, 2, 3, 4, 5, 6}
print(a & b)  #積集合: {3, 4}
print(a - b)  #差集合: {1, 2}
print(a ^ b)  #対象差集合: {1, 2, 5, 6}

「キー(key)」「値(value)」ペアを格納できるデータ型です。
{ }を使用します。
「キー」には変更できない型(文字列、数値、タプルなど)しか使えません。

person = {”name”: “わだ”, “age”: “30”}

print(person)  #出力: {'name': 'わだ', 'age': '30'}
print(person[”name”])  #出力: わだ
print(person[”age”])  #出力: 30
person = {”name”: “わだ”, “age”: “30”}
person[”city”] = “Osaka”

print(person)  #出力: {'name': 'わだ', 'age': '30', 'city': 'Osaka'}
person = {”name”: “わだ”, “age”: “30”}
person[”age”] = 25

print(person)  #出力: {'name': 'わだ', 'age': '25'}

異なる「キー」同じ「値」を持つことは可能です。

 どうも、プログラミング初学者のわだです。最後までお読みいただきありがとうございました。この記事は、学びを整理しながら理解を深めるために書いています。まだ駆け出しではありますが、同じように勉強している方の参考になれば嬉しいです。もし誤りや補足があれば、教えていただけると幸いです。

参考:
Python公式ドキュメント(日本語版)

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

この記事を書いた人

どうもこんにちは、わだです。プログラミングなんて未知の世界。そんなわだがエンジニアになるまでを綴っていきます。

コメント

コメントする

目次