みなさん、データの型は意識していますか?
この記事ではコードを書くうえで重要な概念である、変数とデータの型について解説します!
データ型という概念がいまいちわからない方、コードは書けるけどあまり意識していなかった方はぜひ読んでみてください!
目次
「変数」と「データ型」
変数とは
プログラミングにおいて、変数とは「値を格納する箱」などと説明されます。
数学で出てくる変数とイメージは概ね同じです。
使い方は簡単です。
- 変数という箱を用意して名前をつける
- 値(数値、文字など)を変数に格納(代入)する
- 好きな処理をする
ただこれだけです。
実際の例を見てみましょう。
x = 22 #変数xに22を代入
name = "田中" #変数nameを宣言して文字列「田中」を代入
print(name + "さんの年齢は" + str(x) +"歳です")
#結果
#田中さんの年齢は22歳です
1、2行目で変数にそれぞれ数値22と文字列「田中」を代入して、3行目で用意した変数から値を取り出して処理しています。
単純に「田中さんの年齢は22歳です」と表示するならこんなコードでも構いません。
print("田中さんの年齢は22歳です")
しかし、やっぱり田中さんじゃなくて田村さんに変えようとなった時、「田中」の部分を「田村」に書き換えなければなりません。
今回のように1行だけなら簡単です。
ではこんなコードだったらどうでしょう。
name_list = ["中村", "山田", "藤原", "田辺"]
name_list.append("田中")
if len("田中") < 3:
print("田中")
else:
print("田代")
#結果
#田中
4箇所の「田中」を書き換えなければなりません。
しかし、変数を使えばそんな手間はなくなります。
x = "田中"
name_list = ["中村", "山田", "藤原", "田辺"]
name_list.append(x)
if len(x) < 3:
print(x)
else:
print("田代")
#結果
#田中
1行目の田中を田村に変えるだけです。
x = "田村"
name_list = ["中村", "山田", "藤原", "田辺"]
name_list.append("x")
if len(x) < 3:
print(x)
else:
print("田代")
#結果
#田村
変数をうまく使えば、コードのミスや手間を減らすことができます。
このように、変数は「箱」なので、必要に応じて中身を取り出したり、中身を入れ替えたりできます。
データ型とは
次に、データの型について解説します。
初めてプログラミングに触れる方にとっては馴染のない概念かもしれません。
イメージとしては、数字や文字といったデータの種類と思っていただくのが良いかもしれません。
データ型への意識をおろそかにすると、次のようなことが起こり得ます
- 型の不一致によるエラー
- 処理内容によって、適切な型が異なります。
例えば、文字と数字は足し算できませんよね。
型の不一致はエラーの主な原因の1つです。
- 処理内容によって、適切な型が異なります。
- 処理速度の低下
- 型によってデータの大きさは異なります。
例えば、整数を扱う型と小数を扱う型では、小数点以下の部分だけデータが大きくなり、処理速度低下の原因になります。
日帰り旅行に宿泊用のキャリーバッグを持って行くようなものです。
逆に大きなデータを扱いたいのに小さなデータ用の型を使ってしまうとパフォーマンスが低下します。
データに適した型を選択することが大切です。
- 型によってデータの大きさは異なります。
- 可読性の向上
- 処理内容によって扱えるデータの型が変わります。
逆にデータの型が分かれば、処理内容の理解に繋がります。
プログラムが大きくなると、どのコードでどんな変数を扱い、どのような処理を行っているかわからなくなります。
どの変数がどのような型かを理解するのは大変重要です。
- 処理内容によって扱えるデータの型が変わります。
Pythonでデータ型を確認する方法
Pythonでは標準の関数type()を使うことでデータの型を確認できます。
次のコードでリスト内の要素の型を順番に表示するサンプルをご紹介します。
type_sample = [1, "text", [], True, (0, 1)]
for i in range(len(type_sample)):
print(str(type_sample[i]) + ":" + str(type(type_sample[i])))
#結果
# 1:<class 'int'>
# text:<class 'str'>
# []:<class 'list'>
# True:<class 'bool'>
# (0, 1):<class 'tuple'>
リスト内の要素はそれぞれint型、str型、list型、bool型、tuple型であることが分かります。
ここではそれぞれの型の詳細については割愛します。(list型とtuple型についてはこちらの記事で解説していますのでぜひ参考にしてください!)
コードを書いていてTypeErrorというエラーが発生した場合は、type()をつかってそのデータの型を確認してみてください。
この例では、range()関数の引数はint型(整数)である必要があるので、「str型は整数として扱えません」とエラーが発生しています。
データの型を変換する
データの型が合わない場合、合う型に変換する必要があります。
型の変換はキャストという言い方をする場合もあるので、頭の端っこに入れておいてください。
型は無数にあってすべてを紹介するのは難しいので、ここでは一部をご紹介します。
型の変換方法については、ネットで「Python 整数 文字列 変換」などと検索すれば出てきます。
数値→文字列
変換したい数値をstr()関数にわたすことで数値を文字列に変換できます。
print(type(10))
x = str(10)
print(type(x))
#結果
#<class 'int'>
#<class 'str'>
int型の10とstr型の10は見た目は同じでも型が異なるため、関数等で使うときはできる処理が異なるので注意が必要です。
文字列に変換することで、文字列同士で足し算ができるようになります。
x = str(10)
msg = "私は" + x + "歳です。"
print(msg)
#結果
#私は10歳です。
文字列→数値
Pythonにおける数値型は3種類あります。
型名 | 例 |
int型(整数型) | 1、-10 |
float型(浮動小数点型) | 0.1、0.5 |
complex型(複素数型) | 2+1j ※虚数単位はjで書く |
それぞれint(文字列)といった形で「型の名前(文字列)」でそれぞれの数値型に変換できます。
文字列をそれぞれの数値型に変換した例をご紹介します。
x_int = "10"
print(type(x_int))
print(type(int(x_int))) #文字列→int型
x_float = "0.5"
print(type(x_float))
print(type(float(x_float))) #文字列→float型
x_complex = "2-1j"
print(type(x_complex))
print(type(complex(x_complex))) #文字列→complex型
#結果
# <class 'str'>
# <class 'int'>
# <class 'str'>
# <class 'float'>
# <class 'str'>
# <class 'complex'>
おわりに
いかがだったでしょうか。
PythonではC言語などと比べると、データ型にうるさくないかもしれませんが、コードを書くうえで重要であることには変わりありません。
ぜひ、この機会にマスターしてください!
分かりづらい点やもっと詳しく解説してほしいところがあればコメントをいただけると幸いです。
最後まで読んでいただきありがとうございました。
コメントを残す