目次
1.はじめに
2.4つのデータ型
3.Float型の注意点
4.String型の特徴
5.おわりに
1. はじめに
この記事では、Pythonの4つのデータ型について紹介します。
特に、float型を扱うときの注意点などについては、改めて勉強して初めて知ったので学んだ記録としてここにまとめてみました。
2. 4つのデータ型
* int型(整数)*
int型は、整数を表すためのデータ型です。
ex_num_1 = 5
ex_num_2 = 0
ex_num_3 = -10
* float型(浮動小数点数)*
float型は、浮動小数点数を表すためのデータ型です。
本記事の中程で説明をしますが、float型のデータを扱う際には誤差が生じる可能性があるので、注意が必要です。
ex_num_1 = 1.2345
ex_num_2 = 0.0
ex_num_3 = -1.5
* string型(文字列)*
string型(str型)は、文字列を扱うためのデータ型です。
以下の例のように、シングルクォートまたは、ダブルクォートで囲って定義します。
ex_1 = 'This is a string.'
ex_2 = "This is also a string."
ex_3 = "123456789" # ex_3 = '123456789' でも可
* bool型(ブール値)*
bool型は、真理値を表すためのデータ型です。
bool型には、「True」と「False」の2つのインスタンスがあります。
また、bool型はint型のサブクラスで「True」は「1」、「False」は「0」として扱われます。
ex_1 = True
ex_2 = False
3. float型の注意点
Pythonのfloat型を扱う際には、誤差が生じる可能性があることを考慮する必要があります。
例として、以下を実行します。
print(1.23 + 2.80)
4.029999999999999
上記の通り、sample5.pyを実行した場合、結果は「4.03」にならず「4.029999999999999」が出力されます。
これは、PythonがC言語の上に作られており、C言語ではデータがbinaryで処理されるために引き起こされる現象のようです。
このような誤差を生じさせないための解決策として、2つの方法があります。
【解決策1:int型を活用する】
まず、1つ目はint型を活用する方法です。少数を整数に直して、int型として演算処理を行うことで誤差が生じるのを回避することができます。
result_1 = (123 + 280) / 100 # 1.23と2.80を100倍して整数として計算
print(result_1)
4.03
【解決策2:round()関数を使用する】
2つ目はround()関数を使用する方法です。round()関数を使用して四捨五入することで誤差が生じるのを回避することができます。
result_2 = 1.23 + 2.80
print(round(result_2, 2)) # round(四捨五入したい値, 小数点以下の桁数の指定)
4.03
ちなみに、round()関数は上記の例のように、小数点以下の桁数を指定せず、round(四捨五入したい値)のように記述することもできます。
この場合、結果は以下のように整数になります。
ex = 1.23 + 2.80
print(round(ex)) # round(四捨五入したい値)
4
注意
「四捨五入」と記載していますが、正確には少し違います。
Pythonのround()関数では、
・round(2.5) → 2
・round(3.5) → 4
のように丸められるので、「0.5」や「0.05」などを扱う際には注意が必要です。
(詳細に調べてはいませんが、round()関数で四捨五入ではなく、偶数丸めをする理由は、大量のデータを処理する際などに統計的な偏りを回避して、より正確な計算結果を得るためらしい...。)
4. string型の特徴
Pythonのstring型には、いくつかの特徴があります。
-
インデックスアクセス
文字列の各文字に、インデックスを使ってアクセスできます。
ex = "orange"
print(ex[2])
print("apple"[4])
a
e
-
スライス
文字列をスライスできます。
ex = "apricots"
print(ex[:3]) # 始まりを指定しない場合は、最初の文字から取得
print(ex[2:5]) # 3文字目から5文字目までを取得
print(ex[4:]) # 終わりを指定しない場合は、最後の文字までを取得
apr
ric
cots
-
結合
文字列を結合することができます。
ex = "ab" + "-" + "cd" # 「+」で結合
print(ex)
print(ex[3])
print(ex[1:4])
ab-cd
c
b-c
ちなみに、ここまでで紹介してきたスライスなどの操作を行っても、最初に定義した文字列は保持されます。
↓↓↓↓↓↓↓↓↓↓
data = "sample text"
sliced_data = data[4:]
print(sliced_data)
print(data)
print(data[8])
print(data)
le text
sample text
e
sample text
5. おわりに
本記事では、Pythonのデータ型についてまとめてみました。
float型の誤差やround()関数の偶数丸めなどについては、全く知らなかったのできちんと勉強し直してよかったなと思いました。