🦁

Pythonの初心者レッスンーーPythonデータ型変換

2024/06/13に公開

シーリズの目次

Pythonの初心者レッスンをここにまとめています。
https://zenn.dev/datasciencekun/articles/319e0f4b4021c5

Pythonにおけるデータ型変換には、暗黙の型変換明示的な型変換の2つの方法があります。

暗黙の型変換

隐式类型转换は、Pythonが自動的に行う型変換です。プログラマーが明示的に変換を指示しなくても、Pythonが状況に応じて適切な型に変換します。
例:

  1. 数値型の演算:
int_num = 5
float_num = 2.0
result = int_num + float_num  # int_num は自動的に float に変換される
print(result)  # 7.0
  1. ブール値の演算
boolean_value = True
int_value = 1
result = boolean_value + int_value  # boolean_value は自動的に int に変換される
print(result)  # 2

Pythonでは、暗黙の型変換(暗黙的な型変換)が行われない例がいくつかあります。その代表的な例が、int型とstr型の間での直接の連結や演算です。以下に、暗黙の型変換が行われずエラーが発生する例を示します。
例:int型とstr型の連結
整数と文字列を直接連結しようとすると、暗黙の型変換が行われずエラーが発生します。

age = 25
message = "私は " + age + " 歳です。"  # ここでエラーが発生します

このコードを実行すると次のようなエラーメッセージが表示されます。

TypeError: can only concatenate str (not "int") to str

暗黙の型変換が行われない場合、Pythonは異なるデータ型間の操作に対してエラーを発生させます。これを避けるためには、必要に応じて明示的に型変換を行うことが重要です。

明示的な型変換

显式类型转换は、プログラマーが明示的に行う型変換です。特定の型に変換するために、組み込み関数を使用します。
例:

  1. 整数から文字列への変換:
num = 10
str_num = str(num)
print(str_num)  # "10"
  1. 文字列から浮動小数点数への変換:
str_value = "3.14"
float_value = float(str_value)
print(float_value)  # 3.14
  1. リストからセットへの変換:
list_value = [1, 2, 2, 3]
set_value = set(list_value)
print(set_value)  # {1, 2, 3}

データ型変換の内置関数(ビルトイン関数)

このテーブルを使用することで、Pythonでのデータ型変換の方法を簡単に参照することができます。

関数 説明
int() 引数を整数型に変換します int("123")123
int(123.45)123
float() 引数を浮動小数点数型に変換します float("123.45")123.45
float(123)123.0
str() 引数を文字列型に変換します str(123)"123"
str(123.45)"123.45"
bool() 引数をブール型に変換します bool(1)True
bool(0)False
list() 引数をリスト型に変換します list((1, 2, 3))[1, 2, 3]
list("abc")['a', 'b', 'c']
tuple() 引数をタプル型に変換します tuple([1, 2, 3])(1, 2, 3)
tuple("abc")('a', 'b', 'c')
set() 引数をセット型に変換します set([1, 2, 2, 3]){1, 2, 3}
set("abc"){'a', 'b', 'c'}
dict() 引数を辞書型に変換します(通常はキーと値のペアから) dict([("a", 1), ("b", 2)]){'a': 1, 'b': 2}
complex() 引数を複素数型に変換します complex(1, 2)(1+2j)
complex("1+2j")(1+2j)
chr() 整数を対応するUnicode文字に変換します chr(97)'a'
ord() 文字を対応するUnicodeコードポイントに変換します ord('a')97
hex() 整数を16進数表現の文字列に変換します hex(255)'0xff'
oct() 整数を8進数表現の文字列に変換します oct(8)'0o10'
bin() 整数を2進数表現の文字列に変換します bin(255)'0b11111111'
ascii() 任意のオブジェクトをASCII文字列に変換します ascii('あ')"'\\u3042'"
repr() 任意のオブジェクトを評価可能な文字列表現に変換します repr([1, 2, 3])'[1, 2, 3]'
frozenset() 引数をイミュータブル(変更不可)なセット型に変換します frozenset([1, 2, 3])frozenset({1, 2, 3})
bytes() 引数をバイトオブジェクトに変換します bytes('abc', 'utf-8')b'abc'
bytearray() 引数を可変バイトオブジェクトに変換します bytearray('abc', 'utf-8')bytearray(b'abc')
memoryview() バイトオブジェクトからメモリビューオブジェクトを作成します memoryview(b'abc')

Discussion