ユーニックス総合研究所

  • home
  • archives
  • python-cast

Pythonによるキャストのやり方を詳しく解説します

  • 作成日: 2023-07-15
  • 更新日: 2023-12-25
  • カテゴリ: Python

Pythonによるキャストのやり方

キャストとは、ある型を別の型に変換することを言います。
Pythonにも型は存在しているので当然ながらキャストも行えます。

この記事ではPythonによるキャストのやり方について詳しく解説します。

関連記事
Djangoでオブジェクトを一括作成・更新【bulk_create, bulk_update】
DjangoのModel.objects.filter()の使い方【QuerySet】
Djangoのmodelのcreate()の使い方【Python】
Django入門: ルートの設定 ~ 簡単な一行掲示板アプリを作る その4【Windows10】
NumPyのappend()の使い方: 配列の末尾に要素を追加
Numpyのarangeの使い方: 指定範囲の数列を生成する
Python3でYoutube Data APIを使ってキーワード検索する
PythonからC言語(my.puts)を呼び出して実行する

変換できない場合の例外処理

キャストで変換できない場合はTypeError例外が飛んできます。

try:  
    int([1, 2, 3])  
except TypeError as e:  
    print(e)  
    # int() argument must be a string, a bytes-like object or a real number, not 'list'  

キャストする場合はこの例外を補足するようにします。
またint()float()に数値じゃない文字列を与えた場合はValueError例外が飛んできます。

try:  
    int('abc')  
except ValueError as e:  
    print(e)  
    # invalid literal for int() with base 10: 'abc'  

try:  
    float('abc')  
except ValueError as e:  
    print(e)  
    # could not convert string to float: 'abc'  

文字列をintにキャストすることは多いので、このエラーハンドリングをしてエラーに対処しておきましょう。

strへのキャスト

strは文字列型です。
この型へキャストするにはstr()に値を渡します。

# int  
print(str(123))  # 123  

# float  
print(str(3.14))  # 3.14  

# complex  
print(str(3+2j))  # (3+2j)  

# list  
print(str([1, 2, 3]))  # [1, 2, 3]  

# tuple  
print(str((1, 2, 3)))  # (1, 2, 3)  

# dict  
print(str({'a': 1, 'b': 2}))  # {'a': 1, 'b': 2}  

# bool  
print(str(True))  # True  

intfloat、また複素数(complex)など。
それからリスト、タプル、辞書、boolなどを文字列に変換可能です。

intへのキャスト

文字列、floatintへキャストできます。

# str  
print(int('123'))  # 123  

# float  
print(int(3.14))  # 3  

floatへのキャスト

文字列、intfloatへキャストできます。

# str  
print(float('3.14'))  # 3.14  

# int  
print(float(1))  # 1.0  

複素数へのキャスト

文字列を複素数へキャストできます。

# complex  
print(float('3+2j'))  # (3+2j)  

リストへのキャスト

タプルをリストへキャストするには以下のようにします。

# tuple  
print(list((1, 2, 3)))  # [1, 2, 3]  

また辞書のdict_keysdict_valuesdict_itemsをリストへキャストするには以下のようにします。

d = {'a': 1, 'b': 2}  

# keys  
print(d.keys())  # dict_keys(['a', 'b'])  
print(list(d.keys()))  # ['a', 'b']  

# values  
print(d.values())  # dict_values([1, 2])  
print(list(d.values()))  # [1, 2]  

# items  
print(d.items())  # dict_items([('a', 1), ('b', 2)])  
print(list(d.items()))  # [('a', 1), ('b', 2)]  

タプルへのキャスト

リストをタプルへキャストするには以下のようにします。

# list  
print(tuple([1, 2, 3]))  # (1, 2, 3)  

また辞書のdict_keysdict_valuesdict_itemsをタプルへキャストするには以下のようにします。

d = {'a': 1, 'b': 2}  

# keys  
print(d.keys())  # dict_keys(['a', 'b'])  
print(tuple(d.keys()))  # ('a', 'b')  

# values  
print(d.values())  # dict_values([1, 2])  
print(tuple(d.values()))  # (1, 2)  

# items  
print(d.items())  # dict_items([('a', 1), ('b', 2)])  
print(tuple(d.items()))  # (('a', 1), ('b', 2))  

辞書へのキャスト

例えば以下のようなリストは辞書へキャストできます。

[('a', 1), ('b', 2)]  

以下のようにキャストします。

# list  
print(dict([('a', 1), ('b', 2)]))  # {'a': 1, 'b': 2}  

boolへのキャスト

intfloatboolにキャストできます。

print(bool(1))  # True  
print(bool(0))  # False  
print(bool(3.14))  # True  
print(bool(0.0))  # False  

おわりに

今回はPythonのキャストについて解説しました。
なにか参考になれば幸いです。

🦝 < 型変換!

🦝 < キャスト!