Python Language
単純な数学演算子
サーチ…
前書き
備考
数値型とそのメタクラス
numbers
モジュールには、数値型の抽象メタクラスが含まれています。
サブクラス | 番号。番号 | 数字。インテグラ | 理性 | リアル。 | numbers.Complex |
---|---|---|---|---|---|
ブール | ✓ | ✓ | ✓ | ✓ | ✓ |
int | ✓ | ✓ | ✓ | ✓ | ✓ |
フラクション。フラクション | ✓ | - | ✓ | ✓ | ✓ |
浮く | ✓ | - | - | ✓ | ✓ |
複合体 | ✓ | - | - | - | ✓ |
decimal.Decimal | ✓ | - | - | - | - |
添加
a, b = 1, 2
# Using the "+" operator:
a + b # = 3
# Using the "in-place" "+=" operator to add and assign:
a += b # a = 3 (equivalent to a = a + b)
import operator # contains 2 argument arithmetic functions for the examples
operator.add(a, b) # = 5 since a is set to 3 right before this line
# The "+=" operator is equivalent to:
a = operator.iadd(a, b) # a = 5 since a is set to 3 right before this line
可能な組み合わせ(組み込み型):
-
int
とint
(与えint
) -
int
とfloat
(与えfloat
) -
int
とcomplex
(与えcomplex
) -
float
とfloat
(与えfloat
) -
float
とcomplex
(与えcomplex
) -
complex
かつcomplex
(与えcomplex
)
注意: +
演算子は、文字列、リスト、およびタプルを連結するためにも使用されます。
"first string " + "second string" # = 'first string second string'
[1, 2, 3] + [4, 5, 6] # = [1, 2, 3, 4, 5, 6]
減算
a, b = 1, 2
# Using the "-" operator:
b - a # = 1
import operator # contains 2 argument arithmetic functions
operator.sub(b, a) # = 1
可能な組み合わせ(組み込み型):
-
int
とint
(与えint
) -
int
とfloat
(与えfloat
) -
int
とcomplex
(与えcomplex
) -
float
とfloat
(与えfloat
) -
float
とcomplex
(与えcomplex
) -
complex
かつcomplex
(与えcomplex
)
乗算
a, b = 2, 3
a * b # = 6
import operator
operator.mul(a, b) # = 6
可能な組み合わせ(組み込み型):
-
int
とint
(与えint
) -
int
とfloat
(与えfloat
) -
int
とcomplex
(与えcomplex
) -
float
とfloat
(与えfloat
) -
float
とcomplex
(与えcomplex
) -
complex
かつcomplex
(与えcomplex
)
注意: *
演算子は、文字列、リスト、およびタプルの繰り返し連結にも使用されます。
3 * 'ab' # = 'ababab'
3 * ('a', 'b') # = ('a', 'b', 'a', 'b', 'a', 'b')
分割
両方のオペランドが整数の場合、Pythonは整数除算を行います。 Pythonの除算演算子の動作は、Python 2.xと3.xから変更されています( Integer Divisionも参照してください)。
a, b, c, d, e = 3, 2, 2.0, -3, 10
Python 2では、 '/'演算子の結果は分子と分母の型に依存します。
a / b # = 1
a / c # = 1.5
d / b # = -2
b / a # = 0
d / e # = -1
a
とb
両方がint
であるため、結果はint
ます。
結果は常に丸められます。
c
はfloat型なのでa / c
結果はfloat
です。
演算子モジュールを使用することもできます。
import operator # the operator module provides 2-argument arithmetic functions
operator.div(a, b) # = 1
operator.__div__(a, b) # = 1
フロート分割が必要な場合:
推奨:
from __future__ import division # applies Python 3 style division to the entire module
a / b # = 1.5
a // b # = 1
さて(あなたはモジュール全体に適用したくない場合):
a / (b * 1.0) # = 1.5
1.0 * a / b # = 1.5
a / b * 1.0 # = 1.0 (careful with order of operations)
from operator import truediv
truediv(a, b) # = 1.5
推奨しません(引数が複雑な場合など、TypeErrorが発生することがあります)。
float(a) / b # = 1.5
a / float(b) # = 1.5
Python 2の '//'演算子は、型に関係なく、分割を強制します。
a // b # = 1
a // c # = 1.0
Python 3では、 /
演算子は型に関係なく '真の'除算を実行します。 //
演算子はフロア分割を行い、型を保持します。
a / b # = 1.5
e / b # = 5.0
a // b # = 1
a // c # = 1.0
import operator # the operator module provides 2-argument arithmetic functions
operator.truediv(a, b) # = 1.5
operator.floordiv(a, b) # = 1
operator.floordiv(a, c) # = 1.0
可能な組み合わせ(組み込み型):
-
int
とint
(Python 2ではint
を与え、Python 3ではfloat
を返す) -
int
とfloat
(与えfloat
) -
int
とcomplex
(与えcomplex
) -
float
とfloat
(与えfloat
) -
float
とcomplex
(与えcomplex
) -
complex
かつcomplex
(与えcomplex
)
詳細は、 PEP 238を参照してください。
指数
a, b = 2, 3
(a ** b) # = 8
pow(a, b) # = 8
import math
math.pow(a, b) # = 8.0 (always float; does not allow complex results)
import operator
operator.pow(a, b) # = 8
組み込みpow
とmath.pow
別の違いは、組み込みpow
が3つの引数を受け入れることができることです。
a, b, c = 2, 3, 2
pow(2, 3, 2) # 0, calculates (2 ** 3) % 2, but as per Python docs,
# does so more efficiently
特別な機能
関数math.sqrt(x)
は、 x
平方根を計算します。
import math
import cmath
c = 4
math.sqrt(c) # = 2.0 (always float; does not allow complex results)
cmath.sqrt(c) # = (2+0j) (always complex)
キューブルートなどの他のルートを計算するには、ルートの次数の逆数に数値を上げます。これは、指数関数または演算子のいずれかを使って行うことができます。
import math
x = 8
math.pow(x, 1/3) # evaluates to 2.0
x**(1/3) # evaluates to 2.0
関数math.exp(x)
e ** x
計算します。
math.exp(0) # 1.0
math.exp(1) # 2.718281828459045 (e)
関数math.expm1(x)
e ** x - 1
計算します。 x
が小さい場合、これはmath.exp(x) - 1
よりもはるかに優れた精度を与えます。
math.expm1(0) # 0.0
math.exp(1e-6) - 1 # 1.0000004999621837e-06
math.expm1(1e-6) # 1.0000005000001665e-06
# exact result # 1.000000500000166666708333341666...
対数
デフォルトでは、 math.log
関数は数値の対数を計算します。オプションで、ベースを第2引数として指定することもできます。
import math
import cmath
math.log(5) # = 1.6094379124341003
# optional base argument. Default is math.e
math.log(5, math.e) # = 1.6094379124341003
cmath.log(5) # = (1.6094379124341003+0j)
math.log(1000, 10) # 3.0 (always returns float)
cmath.log(1000, 10) # (3+0j)
math.log
関数の特殊なバリエーションは、さまざまな基底に存在します。
# Logarithm base e - 1 (higher precision for low values)
math.log1p(5) # = 1.791759469228055
# Logarithm base 2
math.log2(8) # = 3.0
# Logarithm base 10
math.log10(100) # = 2.0
cmath.log10(100) # = (2+0j)
埋め込み操作
アプリケーション内では、次のようなコードを持つ必要があります。
a = a + 1
または
a = a * 2
これらの操作のための効果的なショートカットがあります。
a += 1
# and
a *= 2
インプレース演算を行うには、 '='文字の前に任意の数学演算子を使用できます。
-
-=
変数を減分する -
+=
変数を所定の位置にインクリメントする -
*=
変数を適所に乗じる -
/=
変数を適切な場所に分割する -
//=
floorは変数を所定の場所に分割する#Python 3 -
%=
変数のモジュラスを所定の位置に戻す -
**=
場でパワーアップする
ビット演算子( ^
、 |
など)には、他の場所演算子が存在します。
三角関数
a, b = 1, 2
import math
math.sin(a) # returns the sine of 'a' in radians
# Out: 0.8414709848078965
math.cosh(b) # returns the inverse hyperbolic cosine of 'b' in radians
# Out: 3.7621956910836314
math.atan(math.pi) # returns the arc tangent of 'pi' in radians
# Out: 1.2626272556789115
math.hypot(a, b) # returns the Euclidean norm, same as math.sqrt(a*a + b*b)
# Out: 2.23606797749979
math.hypot(x, y)
は、原点(0, 0)
から点(x, y)
までのベクトル(またはユークリッド距離)の長さでもあることに注意してください。2つの点
(x1, y1)
と(x2, y2)
間のユークリッド距離を計算するには、次のようにmath.hypot
を使用できますmath.hypot(x2-x1, y2-y1)
ラジアン - >度と度 - >ラジアンから変換するには、それぞれmath.degrees
とmath.radians
使用します
math.degrees(a)
# Out: 57.29577951308232
math.radians(57.29577951308232)
# Out: 1.0
モジュラス
他の多くの言語と同様に、Pythonはモジュラスの計算に%
演算子を使用します。
3 % 4 # 3
10 % 2 # 0
6 % 4 # 2
または、 operator
モジュールを使用して:
import operator
operator.mod(3 , 4) # 3
operator.mod(10 , 2) # 0
operator.mod(6 , 4) # 2
負の数を使用することもできます。
-9 % 7 # 5
9 % -7 # -5
-9 % -7 # -2
整数除算とモジュラスの結果を見つける必要がある場合は、 divmod
関数をショートカットとして使用できます。
quotient, remainder = divmod(9, 4)
# quotient = 2, remainder = 1 as 4 * 2 + 1 == 9