Python 絶対値:初心者向けにわかりやすく解説
Pythonで数値を扱う上で、絶対値は非常に基本的な概念であり、多くの場面で役立ちます。この記事では、Pythonにおける絶対値の概念、その使用方法、そして関連する重要な知識について、初心者の方にも分かりやすく解説します。
1. 絶対値とは何か?
絶対値とは、数値の符号(プラスまたはマイナス)を取り除いた、その数値の0からの距離のことです。つまり、正の数はそのまま、負の数は正の数に変換されます。
例:
- 5 の絶対値は 5
- -5 の絶対値も 5
- 0 の絶対値は 0
絶対値は、数値の大小関係ではなく、その大きさを表したい場合に便利です。例えば、2つの地点間の距離を計算する場合や、誤差の大きさを評価する場合などに利用されます。
2. Pythonで絶対値を求める方法:abs()
関数
Pythonでは、組み込み関数であるabs()
関数を使って、簡単に数値の絶対値を求めることができます。
2.1 abs()
関数の基本的な使い方
abs()
関数は、引数として数値を受け取り、その絶対値を返します。
“`python
整数の絶対値
print(abs(5)) # 出力: 5
print(abs(-5)) # 出力: 5
print(abs(0)) # 出力: 0
浮動小数点数の絶対値
print(abs(3.14)) # 出力: 3.14
print(abs(-3.14)) # 出力: 3.14
変数に格納された数値の絶対値
num = -10
absolute_value = abs(num)
print(absolute_value) # 出力: 10
“`
上記のように、abs()
関数は整数、浮動小数点数のどちらにも対応しており、非常に直感的に使用できます。
2.2 abs()
関数の引数に使えるデータ型
abs()
関数は、数値型(整数、浮動小数点数、複素数)の引数を受け取ることができます。複素数については後述します。
2.3 abs()
関数が数値以外を受け取った場合
abs()
関数に数値以外のデータ型(文字列、リスト、タプルなど)を渡すと、TypeError
が発生します。
“`python
文字列を渡すとエラーになる
try:
print(abs(“hello”))
except TypeError as e:
print(f”エラーが発生しました: {e}”) # 出力: エラーが発生しました: bad operand type for abs(): ‘str’
“`
エラーメッセージは「bad operand type for abs(): ‘str’」のように、abs()
関数が受け取れないデータ型(この場合は文字列)であることを示しています。
3. 複素数の絶対値(絶対値またはモジュラス)
Pythonのabs()
関数は、複素数の絶対値(またはモジュラス)も計算できます。複素数は、実数部と虚数部から構成される数値で、a + bj
(または a + bi
) の形式で表されます。ここで、a
は実数部、b
は虚数部、j
(または i
) は虚数単位(√-1)です。
複素数の絶対値は、実数部と虚数部を使って次の式で計算されます。
|a + bj| = √(a² + b²)
Pythonで複素数を扱うには、complex()
関数を使用するか、直接 a + bj
のように記述します。
“`python
複素数の定義
z1 = complex(3, 4) # 実数部が3、虚数部が4の複素数
z2 = 1 + 2j # 直接記述
複素数の絶対値
print(abs(z1)) # 出力: 5.0 (√(3² + 4²) = √25 = 5)
print(abs(z2)) # 出力: 2.23606797749979 (√(1² + 2²) = √5 ≈ 2.236)
“`
4. 絶対値の応用例
絶対値は、プログラミングの様々な場面で活用できます。以下にいくつかの応用例を示します。
4.1 2点間の距離の計算
座標平面上の2点 (x1, y1) と (x2, y2) の間の距離は、絶対値を使って次のように計算できます。
distance = √((x2 – x1)² + (y2 – y1)²)
Pythonでの実装例:
“`python
import math
def calculate_distance(x1, y1, x2, y2):
“””2点間の距離を計算する関数”””
distance = math.sqrt((x2 – x1)2 + (y2 – y1)2)
return distance
例
x1, y1 = 1, 2
x2, y2 = 4, 6
distance = calculate_distance(x1, y1, x2, y2)
print(f”2点間の距離: {distance}”) # 出力: 2点間の距離: 5.0
“`
この例では、math.sqrt()
関数を使って平方根を計算しています。**2
はべき乗を表します。
4.2 誤差の評価
実験結果や計算結果の誤差を評価する際に、絶対値を使うと、誤差の大きさを符号に関係なく評価できます。
“`python
def calculate_error(expected_value, actual_value):
“””誤差を計算する関数”””
error = abs(expected_value – actual_value)
return error
例
expected_value = 10
actual_value = 9.5
error = calculate_error(expected_value, actual_value)
print(f”誤差: {error}”) # 出力: 誤差: 0.5
expected_value = 10
actual_value = 10.5
error = calculate_error(expected_value, actual_value)
print(f”誤差: {error}”) # 出力: 誤差: 0.5
“`
この例では、期待値と実際の値の差の絶対値を計算することで、誤差の大きさを評価しています。
4.3 条件分岐
絶対値を使って条件分岐を行うこともできます。例えば、ある数値が一定の範囲内に収まっているかどうかを判定する場合に利用できます。
“`python
def check_range(value, center, tolerance):
“””値が指定された範囲内にあるかどうかを判定する関数”””
if abs(value – center) <= tolerance:
return True
else:
return False
例
value = 7
center = 5
tolerance = 3
if check_range(value, center, tolerance):
print(f”{value} は範囲内です”) # 出力: 7 は範囲内です
else:
print(f”{value} は範囲外です”)
value = 1
center = 5
tolerance = 3
if check_range(value, center, tolerance):
print(f”{value} は範囲内です”)
else:
print(f”{value} は範囲外です”) # 出力: 1 は範囲外です
“`
この例では、value
がcenter
からtolerance
の範囲内に収まっているかどうかを判定しています。
4.4 ソート(並べ替え)
絶対値に基づいてリストをソートすることもできます。例えば、ある基準値からの距離に基づいてリストを並べ替える場合に利用できます。
“`python
numbers = [-5, 2, -1, 0, 3]
center = 0
絶対値に基づいてソート
sorted_numbers = sorted(numbers, key=lambda x: abs(x – center))
print(f”ソートされたリスト: {sorted_numbers}”) # 出力: ソートされたリスト: [0, -1, 2, 3, -5]
“`
この例では、sorted()
関数とlambda
式を使って、各数値とcenter
との差の絶対値をキーとしてリストをソートしています。lambda x: abs(x - center)
は、匿名関数を作成し、各要素 x
に対して abs(x - center)
を計算して、その結果をソートのキーとして使用することを意味します。
5. 絶対値に関する注意点
-
浮動小数点数の比較: 浮動小数点数は、内部的には正確に表現できない場合があります。そのため、浮動小数点数の絶対値を比較する際には、
==
演算子ではなく、ある程度の許容範囲を設けて比較することが推奨されます。“`python
a = 0.1 + 0.2
b = 0.3直接比較するとFalseになる場合がある
print(a == b) # 出力: False
許容範囲を設けて比較する
tolerance = 1e-9 # 許容誤差
if abs(a – b) < tolerance:
print(“a と b はほぼ等しい”) # 出力: a と b はほぼ等しい
else:
print(“a と b は異なる”)
“` -
オーバーフロー: 非常に大きな数値の絶対値を計算する場合、オーバーフローが発生する可能性があります。オーバーフローとは、数値が表現可能な範囲を超えてしまう現象です。オーバーフローが発生すると、予期せぬ結果になる可能性があるため、注意が必要です。
6. まとめ
この記事では、Pythonにおける絶対値の概念、abs()
関数の使い方、そして絶対値の応用例について解説しました。
- 絶対値は、数値の符号を取り除いた、その数値の0からの距離のこと。
- Pythonでは、
abs()
関数を使って簡単に絶対値を求めることができる。 abs()
関数は、整数、浮動小数点数、複素数に対応している。- 絶対値は、2点間の距離の計算、誤差の評価、条件分岐、ソートなど、様々な場面で活用できる。
- 浮動小数点数の比較やオーバーフローには注意が必要。
絶対値は、プログラミングにおいて非常に基本的な概念であり、様々な場面で役立ちます。この記事が、Pythonで絶対値を使いこなすための一助となれば幸いです。
7. 練習問題
- リスト内の数値の絶対値の合計を計算する関数を作成してください。
- 2つの数値のうち、0に近い方を返す関数を作成してください。
- リスト内の数値の絶対値がすべて異なるかどうかを判定する関数を作成してください。
- ユーザーから数値を受け取り、その絶対値を表示するプログラムを作成してください。ただし、数値以外が入力された場合は、エラーメッセージを表示するようにしてください。
- 複素数のリストを受け取り、絶対値が最大となる複素数を返す関数を作成してください。
これらの練習問題を解くことで、絶対値の理解を深め、実践的なスキルを向上させることができます。頑張ってください!