🦁
Pythonの初心者レッスンーーPythonデータ型変換
シーリズの目次
Pythonの初心者レッスンをここにまとめています。
Pythonにおけるデータ型変換には、暗黙の型変換と明示的な型変換の2つの方法があります。
暗黙の型変換
隐式类型转换は、Pythonが自動的に行う型変換です。プログラマーが明示的に変換を指示しなくても、Pythonが状況に応じて適切な型に変換します。
例:
- 数値型の演算:
int_num = 5
float_num = 2.0
result = int_num + float_num # int_num は自動的に float に変換される
print(result) # 7.0
- ブール値の演算
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は異なるデータ型間の操作に対してエラーを発生させます。これを避けるためには、必要に応じて明示的に型変換を行うことが重要です。
明示的な型変換
显式类型转换は、プログラマーが明示的に行う型変換です。特定の型に変換するために、組み込み関数を使用します。
例:
- 整数から文字列への変換:
num = 10
str_num = str(num)
print(str_num) # "10"
- 文字列から浮動小数点数への変換:
str_value = "3.14"
float_value = float(str_value)
print(float_value) # 3.14
- リストからセットへの変換:
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