サーチ…


前書き

Pythonは、整数と浮動小数点の除算、乗算、べき乗、加減算など、一般的な数学演算子を単独で実行します。数学モジュール(すべての標準Pythonバージョンに含まれています)は、三角関数、ルート演算、対数関数などの拡張機能を提供します。

備考

数値型とそのメタクラス

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

可能な組み合わせ(組み込み型):

  • intint (与えint
  • intfloat (与えfloat
  • intcomplex (与えcomplex
  • floatfloat (与えfloat
  • floatcomplex (与え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

可能な組み合わせ(組み込み型):

  • intint (与えint
  • intfloat (与えfloat
  • intcomplex (与えcomplex
  • floatfloat (与えfloat
  • floatcomplex (与えcomplex
  • complexかつcomplex (与えcomplex

乗算

a, b = 2, 3

a * b                  # = 6

import operator
operator.mul(a, b)     # = 6

可能な組み合わせ(組み込み型):

  • intint (与えint
  • intfloat (与えfloat
  • intcomplex (与えcomplex
  • floatfloat (与えfloat
  • floatcomplex (与え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.x 2.7

Python 2では、 '/'演算子の結果は分子と分母の型に依存します。

a / b                  # = 1 

a / c                  # = 1.5

d / b                  # = -2

b / a                  # = 0

d / e                  # = -1

ab両方が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
Python 2.x 2.2

フロート分割が必要な場合:

推奨:

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.x 2.2

Python 2の '//'演算子は、型に関係なく、分割を強制します。

a // b                # = 1
a // c                # = 1.0
Python 3.x 3.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

可能な組み合わせ(組み込み型):

  • intint (Python 2ではintを与え、Python 3ではfloatを返す)
  • intfloat (与えfloat
  • intcomplex (与えcomplex
  • floatfloat (与えfloat
  • floatcomplex (与え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

組み込みpowmath.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.degreesmath.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


Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow