こんにちは! プログラマーのakiraです。
みなさんの中には、
・ キャストってどういう意味だろう?
・ 文字列⇆数値のキャストの方法が知りたい!
と思っている方もいるのではないでしょうか?
本記事では、キャストとはから文字列⇆数値の様々なキャストの方法まで解説していますので、是非参考にしてください!
本記事を読む前に、Pythonがどんなプログラミング言語なのかをおさらいしておきたい人は次の記事を参考にしてください。
→ Pythonとは?特徴やできること、活用例をわかりやすく簡単に解説
なお、その他のPythonの記事についてはこちらにまとめています。
キャストとは
キャストとは、変数やオブジェクトを別の型に変換することです。
型変換とも言います!
例えば、ある数値を他の文字列と連結したい場合などによく利用します。
具体的なキャスト方法については次項以降でより詳しく確認していきましょう!
数値から文字列へのキャスト
ここでは、数値から文字列へのキャスト方法について解説します。
もし「Pythonの文字列って何?」という場合は、以下の記事で文字列について詳しく解説されていますので確認しておきましょう!
それではstr()関数を使用した文字列への変換方法を確認していきましょう!
次の例を見てください!
みなさんは次のサンプルの実行結果はどうなると思いますか?
# -*- coding: utf-8 -*- price = 1000 result = "akiraは" + price + "円のオモチャを買いました。" print(result)
実行結果
Traceback (most recent call last): File "to_str_error.py", line 5, in <module> result = "akiraは" + price + "円のオモチャを買いました。" TypeError: cannot concatenate 'str' and 'int' objects
そうなんです!
実行結果に出力されている通り、文字列と数値は連結できずにエラーとなってしまうのです!
このような場合はどうしたら良いのでしょうか?
次もサンプルコードを実行して確認していきましょう!
# -*- coding: utf-8 -* - price = 1000 result = "akiraは" + str(price) + "円のオモチャを買いました。" print(result)
実行結果
akiraは1000円のオモチャを買いました。
今度は正常に実行されましたね!
文字列への変換は、「str(x)」のように使用します。
xのところに文字列へ変換したいデータを入れてください。
5行目の変数price部分がstr()関数によって文字列へ変換されていることがわかりますね!
このように文字列と数値を連結する際は、str()関数を使用して数値から文字列に変換するということを覚えておきましょう!
文字列から数値へのキャスト
今度は文字列から数値へのキャスト方法を確認していきましょう!
それでは次のサンプルの実行結果はどうなるのでしょうか!
# -*- coding: utf-8 -*- x = "10個のオモチャのオモチャを買いました。" num = x[:2] price = 100 total = num * price print(total)
実行結果
10101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010101010
エラーにはなりませんが、文字列の”10”が100回出力されてしまっていますね。
正しい計算結果は、100円のオモチャを10個買ったトータルの値段となりますので1000となります。
次項で数値変換を行う関数を使用したキャスト方法について詳しく見ていきましょう!
int()を使ってみよう!
それでは、int()関数を使用した数値へのキャストの例を見ていきましょう!
整数への変換は、「int(x)」のように使用します。
xには、整数に変換したいデータを入れてください。
# -*- coding: utf-8 -*- x = "10個のオモチャのオモチャを買いました。" num = x[:2] price = 100 total = int(num) * price print(total)
実行結果
1000
int()関数で文字列を数値へキャストすることにより、今度は正常に実行されましたね!
先程の例では、文字列の”10”が100回出力されていましたが、今回は正しく1000(100円×10個)が出力されています!
その他の数値変換の関数も見ていきましょう!
int()関数についてより詳しく知りたい方は以下の記事にも解説されているので確認してみてください!
float()を使ってみよう!
小数への変換は、float()を使います。
変換する際は、「float(x)」のように使用します!
xには、小数に変換したいデータを入れてください。
サンプルを見ていきましょう!
# -*- coding: utf-8 -*- x = "1.5リットルのジュースを買いました。" liter = x[:3] num= 3 total = float(liter) * num print(total)
実行結果
4.5
「float(liter)」で正しく小数へ変換されて、合計のジュースのリットル(total)が4.5と出力されていますね!
それではint()を使用して、小数を変換した場合はどうなるのでしょうか?
サンプルで見てみましょう!
# -*- coding: utf-8 -*- x = "1.5リットルのジュースを買いました。" liter = x[:3] num= 3 total = int(liter) * num print(total)
実行結果
Traceback (most recent call last): File "to_num/to_float_error.py", line 7, in <module> total = int(liter) * num ValueError: invalid literal for int() with base 10: '1.5'
小数はint()ではなく、float()で変換しないといけないことがわかりましたね!
complex()を使ってみよう!
複素数のキャストに使用するcomplex()を使ってみましょう!
複素数は学生時代の数学の授業で勉強したかと思います。
難しかったですよね!複素数へのキャストを通して理解を深めていきましょう!
サンプルコードを見ていきましょう!
Pythonでは、虚数をiではなく、jで表します。
複素数の実部を2、虚部3として、(2+3j)のように定義しています。
# -*- coding: utf-8 -*- x = 2+3j print(x) print(type(x))
実行結果
(2+3j) <type 'complex'>
それでは文字列を複素数にキャストしてみましょう!
キャストには、complex()を使用します。
# -*- coding: utf-8 -*- x = "2+3j" result = (3+2j) + complex(x) print(result)
実行結果
(5+5j)
文字列が正しく虚数へキャストされて計算できていることがわかりますね!
虚数計算は難しく感じるかもしれないですが、今回の例では、実部の計算(jのない値)3+2=5となり、虚部の計算(jのある値)2j+3j=5jのように各要素を足し算しているだけなので頑張ってマスターしていきましょう!
ここまで文字列から数値のキャストについて見てきましたが、「文字列から数値のキャストの例をもっと学習したい!」という方は以下の記事も見てみてください!
リスト(配列)の要素をキャストする
リスト内の要素を全部一気にキャストしたいと思ったことはありませんか?
リスト内の要素を
・ 文字列から数値
・ 数値から文字列
に一気にキャストする方法についてそれぞれ見ていきましょう!
文字列から数値へキャストしてみよう!
まずは、リスト内の要素を文字列から数値へキャストする方法を見ていきましょう!
ファイルから数値などの値を取得しリストに詰めた場合はこのように数値が文字列でリスト内に格納されてしまうケースもあるかと思います。
以下のサンプルコードのように、mapへ数値変換を行うint()関数を引数として渡すと一括で数値へ変換することができます。
str_list = ['1', '2', '3', '4', '5', '6', '7', '8', '9', '10'] result = list(map(int, str_list)) print(result)
実行結果
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
mapは関数を受け取って処理をすることができる関数になります。
mapを復習したい方は以下の記事に詳しく解説されています!!
数値から文字列へキャストしてみよう!
次はリスト内の要素を数値から文字列キャストする方法を見ていきましょう!
「リスト内の数値を文字列として連結したい!」なんて場合に一括変換して連結することもできますね!
先程の例と同様にmapへ文字列変換を行うstr()関数を引数として渡すことにより文字列へ一括変換しています。
num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] result = list(map(str, num_list)) print(result)
実行結果
['1', '2', '3', '4', '5', '6', '7', '8', '9', '10']
まとめ
いかがでしたでしょうか。
今回は、Pythonで様々なキャストの方法について学習しました!
キャストは、普段のプログラミングでもよく使用しますのでしっかりとここで理解していってください!
また少し応用的ですが、リスト内の要素一括変換は覚えておくと様々なことに応用でき、とても便利なためしっかりとマスターしていきましょう!