Python3 データ型変換

時には、データの組み込み型を変換する必要があります。データ型の変換は、一般的にはデータ型を関数名として使用するだけです。

Python のデータ型変換は2種類に分けられます:

  • 暗黙の型変換 - 自動で完了
  • 明示的な型変換 - 型関数を使用して変換する必要があります

暗黙の型変換

暗黙の型変換では、Python が自動的にあるデータ型を別のデータ型に変換するため、私たちが介入する必要はありません。

以下の例では、異なる2つの型のデータに対して演算を行います。低い方のデータ型(整数)は、データ損失を避けるために高い方のデータ型(浮動小数点数)に変換されます。

例

num_int = 123
num_flo = 1.23

num_new = num_int + num_flo

print("num_int のデータ型:",type(num_int))
print("num_flo のデータ型:",type(num_flo))

print("num_new の値:",num_new)
print("num_new のデータ型:",type(num_new))

上記の例の出力結果は次のとおりです:

num_int 数据类型为: <class 'int'>
num_flo 数据类型为: <class 'float'>
num_new: 值为: 124.23
num_new 数据类型为: <class 'float'>

コードの解説:

  • 例では、異なるデータ型の2つの変数num_intとnum_floを加算演算し、変数num_newに格納しています。
  • 次に、3つの変数のデータ型を確認します。
  • 出力結果では、num_intである整型(integer) , num_floである 浮点型(float)。
  • 同様に、新しい変数num_newである 浮点型(float)は、Python が小さい方のデータ型を大きい方のデータ型に変換して、データ損失を避けるためです。

もう一つの例を見てみましょう。整数型データと文字列型データを加算します:

例

num_int = 123
num_str = "456"

print("num_int のデータ型:",type(num_int))
print("num_str のデータ型:",type(num_str))

print(num_int+num_str)

上記の例の出力結果は次のとおりです:

num_int 数据类型为: <class 'int'>
num_str 数据类型为: <class 'str'>
Traceback (most recent call last):
  File "/サンプル-test/test.py", line 7, in <module>
    print(num_int+num_str)
TypeError: unsupported operand type(s) for +: 'int' and 'str'

出力からわかるように、整数型と文字列型の演算結果はエラーになり、TypeError が出力されます。Python はこの場合、暗黙の変換を使用できません。

しかし、Python はこれらの型の場合に対する解決策を提供しています。それが明示的な変換です。

明示的な型変換

明示的な型変換では、ユーザーがオブジェクトのデータ型を必要なデータ型に変換します。int()、float()、str() などの定義済み関数を使用して、明示的な型変換を実行します。

int()整数型への強制変換:

例

x = int(1)   # x の出力結果は 1
y = int(2.8) # y の出力結果は 2
z = int("3") # z の出力結果は 3

float()浮動小数点型への強制変換:

例

x = float(1)     # x の出力結果は 1.0
y = float(2.8)   # y の出力結果は 2.8
z = float("3")   # z の出力結果は 3.0
w = float("4.2") # w の出力結果は 4.2

str()文字列型への強制変換:

例

x = str("s1") # x の出力結果は 's1'
y = str(2)    # y の出力結果は '2'
z = str(3.0)  # z の出力結果は '3.0'

整数型と文字列型の演算は、強制型変換を使用して行うことができます:

例

num_int = 123
num_str = "456"

print("num_int のデータ型:",type(num_int))
print("型変換前の num_str のデータ型:",type(num_str))

num_str = int(num_str)    # 整数型に強制変換
print("型変換後の num_str のデータ型:",type(num_str))

num_sum = num_int + num_str

print("num_int と num_str を加算した結果:",num_sum)
print("sum のデータ型:",type(num_sum))

上記の例の出力結果は次のとおりです:

num_int 数据类型为: <class 'int'>
类型转换前,num_str 数据类型为: <class 'str'>
类型转换后,num_str 数据类型为: <class 'int'>
num_int 与 num_str 相加结果为: 579
sum 数据类型为: <class 'int'>

以下の組み込み関数は、データ型間の変換を実行できます。これらの関数は、変換された値を表す新しいオブジェクトを返します。

関数説明

int(x [,base])

x を整数に変換します

float(x)

x を浮動小数点数に変換します

complex(real [,imag])

複素数を作成します

str(x)

オブジェクト x を文字列に変換します

repr(x)

オブジェクト x を式の文字列に変換します

eval(str)

文字列内の有効な Python 式を評価し、オブジェクトを返します

tuple(s)

シーケンス s をタプルに変換します

list(s)

シーケンス s をリストに変換します

set(s)

変更可能な集合(set)に変換します

dict(d)

辞書を作成します。d は (key, value) タプルのシーケンスである必要があります。

frozenset(s)

変更不可能な集合(frozenset)に変換します

chr(x)

整数を文字に変換します

ord(x)

文字をその整数値に変換します

hex(x)

整数を16進数の文字列に変換します

oct(x)

整数を8進数の文字列に変換します

bool(x)

オブジェクト x をブール値(True または False)に変換します

bytes([source[, encoding[, errors]]])

オブジェクトをイミュータブルなバイトシーケンスに変換します

bytearray([source[, encoding[, errors]]])

オブジェクトをミュータブルなバイト配列(bytearray)に変換します

memoryview(obj)

指定された引数のメモリビューオブジェクトを返します(データはコピーされません)

bin(x)

整数を2進数の文字列に変換します

ascii(x)

オブジェクトの ASCII 表現を返します。非 ASCII 文字はエスケープされます

その他の拡張