수색…


소개

파이썬은 정수 및 부동 소수점 나누기, 곱셈, 지수 화, 더하기 및 빼기 등 일반적인 수학 연산자를 자체적으로 수행합니다. 수학 모듈 (모든 표준 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 (AN 제공 int )
  • intfloat (a 제공 float )
  • intcomplex (a 제공 complex )
  • floatfloat (a 제공 float )
  • floatcomplex (a 제공 complex )
  • complexcomplex (a 제공 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 (AN 제공 int )
  • intfloat (a 제공 float )
  • intcomplex (a 제공 complex )
  • floatfloat (a 제공 float )
  • floatcomplex (a 제공 complex )
  • complexcomplex (a 제공 complex )

곱셈

a, b = 2, 3

a * b                  # = 6

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

가능한 조합 (내장 유형) :

  • intint (AN 제공 int )
  • intfloat (a 제공 float )
  • intcomplex (a 제공 complex )
  • floatfloat (a 제공 float )
  • floatcomplex (a 제공 complex )
  • complexcomplex (a 제공 complex )

참고 : * 연산자는 문자열, 목록 및 튜플을 반복하여 연결하는 데에도 사용됩니다.

3 * 'ab'  # = 'ababab'
3 * ('a', 'b')  # = ('a', 'b', 'a', 'b', 'a', 'b')

분할

두 피연산자가 모두 정수인 경우 파이썬은 정수 나누기를 수행합니다. Python의 나누기 연산자의 동작은 Python 2.x와 3.x에서 변경되었습니다 ( Integer Division 참조).

a, b, c, d, e = 3, 2, 2.0, -3, 10
Python 2.x 2.7

파이썬 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

파이썬 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 (파이썬 2에서는 int 를, 파이썬 3에서는 float 를 제공)
  • intfloat (a 제공 float )
  • intcomplex (a 제공 complex )
  • floatfloat (a 제공 float )
  • floatcomplex (a 제공 complex )
  • complexcomplex (a 제공 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 함수는 숫자의 대수 (기본 e)를 계산합니다. 선택적으로 두 번째 인수로 기본을 지정할 수 있습니다.

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

모든 수학 연산자는 '='문자 앞에 사용하여 inplace 연산을 수행 할 수 있습니다.

  • -= 해당 변수를 감소시킵니다.
  • += 변수를 적절한 위치에 증가시킵니다.
  • *= 해당 위치에 변수를 곱하십시오.
  • /= 변수를 제 위치에 나눕니다.
  • //= 바닥은 변수를 # 파이썬 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) 까지의 벡터 길이 (또는 유클리드 거리)이기도합니다.

두 점 (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

모듈러스

다른 많은 언어들과 마찬가지로, 파이썬은 모듈러스 계산에 % 연산자를 사용합니다.

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