はじめに
Pythonにはいろいろなデータ型があります。どれもプログラムを書く上で欠かせないもので、それぞれ独自の使いどころがあります。
データ型をうまく使いこなせれば、効率的でわかりやすいコードが書けるようになるはずです。
この記事では、Pythonの基本的な標準型にまとめてみました。
参考:
数値型(int, float, complex)
int
整数を表すデータ型です。
他言語のようなint32やint64の指定は不要で、非常に大きな値も扱えます。
x = 42
y = -7
print(type(x)) # 出力: <class 'int'>
float
浮動小数点数を表すデータ型。
pi = 3.14159
print(type(pi)) # 出力: <class 'float'>
complex
複素数を表すデータ型で、a + bj
の形式で表現します。
z = 3 + 4j
print(type(z)) # 出力: <class 'complex'>
ブーリアン型(bool)
bool
真偽値を表すデータ型です。
is_happy = True
print(type(is_happy)) # 出力: <class 'bool'>
イテレータ型
イテレータは、一度に1つずつ値を取り出せる仕組みを提供します。forループでよく使われます。
イテレータの性質として一度next()で要素を取り出すと、その要素はイテレータから「消費」され、再度アクセスすることはできません。
numbers = iter([1, 2, 3])
print(next(numbers)) # 出力: 1
print(next(numbers)) # 出力: 2
print(type(numbers)) # 出力: <class 'list_iterator'>
# 再びリスト全体を取得しようとしてもできない
print(list(numbers)) # 出力: [3]
ジェネレータ型
yield
キーワードを使って値を一つずつ生成するイテレータ。
ジェネレータは、計算結果を逐次生成します。
遅延評価(lazy evaluation)によりメモリ効率に優れています。
def my_generator():
yield 1
yield 2
yield 3
gen = my_generator()
print(type(gen)) # 出力: <class 'generator'>
シーケンス型(list, tuple, range)
list
複数の値を順序付けて格納する可変長のデータ型です。
fruits = ["apple", "banana", "cherry"]
print(type(fruits)) # 出力: <class 'list'>
tuple
リストに似ていますが、要素が変更できない(イミュータブル)データ型です。
coordinates = (10, 20)
print(type(coordinates)) # 出力: <class 'tuple'>
range
整数の範囲を表すイミュータブルなデータ型です。
r = range(5)
print(type(r)) # 出力: <class 'range'>
テキストシーケンス型(str)
str
テキスト型で、Unicodeをサポート。
text = "Hello, World!"
print(type(text)) # 出力: <class 'str'>
バイナリシーケンス型(bytes, bytearray, memoryview)
bytes
バイト列を表すデータ型です(変更不可)。
b = b"hello"
# b[0] = 72 変更不可のため変更しようとするとTypeErrorがRaiseされる
print(type(b)) # 出力: <class 'bytes'>
bytearray
バイト列を表しますが、変更可能です。
ba = bytearray(b"hello")
ba[0] = 72 # 変更可能
print(type(ba)) # 出力: <class 'bytearray'>
memoryview
バイトデータへのビューを作成します。
mv = memoryview(b"hello")
print(mv[0]) # 出力: 104 (ASCIIコードが出力される)
print(type(mv)) # 出力: <class 'memoryview'>
集合型(set, frozenset)
set
一意の要素を順序なしで保持するデータ型です。
numbers = {1, 2, 3, 3}
print(type(numbers)) # 出力: <class 'set'>
frozenset
set
と同様ですが、変更できない(イミュータブル)データ型です。
fs = frozenset([1, 2, 3])
print(type(fs)) # 出力: <class 'frozenset'>
マッピング型(dict)
キーと値のペアを保持するデータ型です。
person = {"name": "Alice", "age": 25}
print(type(person)) # 出力: <class 'dict'>
特殊型(None)
None
値が存在しないことを表すデータ型です。
x = None
print(type(x)) # 出力: <class 'NoneType'>
まとめ
今回はPythonのデータ型についてまとめてみました。
実装の中で型をチェックしたり、型ヒントを記述することが度々あると思うので参考になれば嬉しいです!