Python3 データ型変換
時には、データの組み込み型を変換する必要があります。データ型の変換は、一般的にはデータ型を関数名として使用するだけです。
Python のデータ型変換は2種類に分けられます:
- 暗黙の型変換 - 自動で完了
- 明示的な型変換 - 型関数を使用して変換する必要があります
暗黙の型変換
暗黙の型変換では、Python が自動的にあるデータ型を別のデータ型に変換するため、私たちが介入する必要はありません。
以下の例では、異なる2つの型のデータに対して演算を行います。低い方のデータ型(整数)は、データ損失を避けるために高い方のデータ型(浮動小数点数)に変換されます。
例
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_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()整数型への強制変換:
例
y = int(2.8) # y の出力結果は 2
z = int("3") # z の出力結果は 3
float()浮動小数点型への強制変換:
例
y = float(2.8) # y の出力結果は 2.8
z = float("3") # z の出力結果は 3.0
w = float("4.2") # w の出力結果は 4.2
str()文字列型への強制変換:
例
y = str(2) # y の出力結果は '2'
z = str(3.0) # z の出力結果は '3.0'
整数型と文字列型の演算は、強制型変換を使用して行うことができます:
例
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'>
以下の組み込み関数は、データ型間の変換を実行できます。これらの関数は、変換された値を表す新しいオブジェクトを返します。
| 関数 | 説明 |
|---|---|
|
x を整数に変換します |
|
|
x を浮動小数点数に変換します |
|
|
複素数を作成します |
|
|
オブジェクト x を文字列に変換します |
|
|
オブジェクト x を式の文字列に変換します |
|
|
文字列内の有効な Python 式を評価し、オブジェクトを返します |
|
|
シーケンス s をタプルに変換します |
|
|
シーケンス s をリストに変換します |
|
|
変更可能な集合(set)に変換します |
|
|
辞書を作成します。d は (key, value) タプルのシーケンスである必要があります。 |
|
|
変更不可能な集合(frozenset)に変換します |
|
|
整数を文字に変換します |
|
|
文字をその整数値に変換します |
|
|
整数を16進数の文字列に変換します |
|
|
整数を8進数の文字列に変換します |
|
|
オブジェクト x をブール値(True または False)に変換します |
|
|
オブジェクトをイミュータブルなバイトシーケンスに変換します |
|
|
オブジェクトをミュータブルなバイト配列(bytearray)に変換します |
|
|
指定された引数のメモリビューオブジェクトを返します(データはコピーされません) |
|
|
整数を2進数の文字列に変換します |
|
|
オブジェクトの ASCII 表現を返します。非 ASCII 文字はエスケープされます |