Python Language
Eenvoudige wiskundige operatoren
Zoeken…
Invoering
Opmerkingen
Numerieke typen en hun metaclasses
De numbers
bevat de abstracte metaclasses voor de numerieke typen:
subklassen | numbers.Number | numbers.Integral | numbers.Rational | numbers.Real | numbers.Complex |
---|---|---|---|---|---|
bool | ✓ | ✓ | ✓ | ✓ | ✓ |
int | ✓ | ✓ | ✓ | ✓ | ✓ |
fractions.Fraction | ✓ | - | ✓ | ✓ | ✓ |
vlotter | ✓ | - | - | ✓ | ✓ |
complex | ✓ | - | - | - | ✓ |
decimal.Decimal | ✓ | - | - | - | - |
toevoeging
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
Mogelijke combinaties (ingebouwde types):
-
int
enint
(geeft eenint
) -
int
enfloat
(geeft eenfloat
) -
int
encomplex
(geeft eencomplex
) -
float
enfloat
(geeft eenfloat
) -
float
encomplex
(geeft eencomplex
) -
complex
encomplex
(geeft eencomplex
)
Opmerking: de operator +
wordt ook gebruikt voor het samenvoegen van tekenreeksen, lijsten en tupels:
"first string " + "second string" # = 'first string second string'
[1, 2, 3] + [4, 5, 6] # = [1, 2, 3, 4, 5, 6]
aftrekking
a, b = 1, 2
# Using the "-" operator:
b - a # = 1
import operator # contains 2 argument arithmetic functions
operator.sub(b, a) # = 1
Mogelijke combinaties (ingebouwde types):
-
int
enint
(geeft eenint
) -
int
enfloat
(geeft eenfloat
) -
int
encomplex
(geeft eencomplex
) -
float
enfloat
(geeft eenfloat
) -
float
encomplex
(geeft eencomplex
) -
complex
encomplex
(geeft eencomplex
)
Vermenigvuldiging
a, b = 2, 3
a * b # = 6
import operator
operator.mul(a, b) # = 6
Mogelijke combinaties (ingebouwde types):
-
int
enint
(geeft eenint
) -
int
enfloat
(geeft eenfloat
) -
int
encomplex
(geeft eencomplex
) -
float
enfloat
(geeft eenfloat
) -
float
encomplex
(geeft eencomplex
) -
complex
encomplex
(geeft eencomplex
)
Opmerking: de operator *
wordt ook gebruikt voor herhaalde aaneenschakeling van strings, lijsten en tupels:
3 * 'ab' # = 'ababab'
3 * ('a', 'b') # = ('a', 'b', 'a', 'b', 'a', 'b')
Divisie
Python verdeelt gehele getallen wanneer beide operanden gehele getallen zijn. Het gedrag van de divisie-operatoren van Python is veranderd van Python 2.x en 3.x (zie ook Integer-divisie ).
a, b, c, d, e = 3, 2, 2.0, -3, 10
In Python 2 hangt het resultaat van de '/' -operator af van het type van de teller en de noemer.
a / b # = 1
a / c # = 1.5
d / b # = -2
b / a # = 0
d / e # = -1
Merk op dat omdat zowel a
als b
int
s zijn, het resultaat een int
.
Het resultaat wordt altijd naar beneden afgerond (verdieping).
Omdat c
een float is, is het resultaat van a / c
een float
.
U kunt ook de bedieningsmodule gebruiken:
import operator # the operator module provides 2-argument arithmetic functions
operator.div(a, b) # = 1
operator.__div__(a, b) # = 1
Wat als u floatverdeling wilt:
Aanbevolen:
from __future__ import division # applies Python 3 style division to the entire module
a / b # = 1.5
a // b # = 1
Oké (als je niet wilt solliciteren op de hele module):
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
Niet aanbevolen (kan TypeError veroorzaken, bijvoorbeeld als het argument complex is):
float(a) / b # = 1.5
a / float(b) # = 1.5
De '//' -operator in Python 2 dwingt vloeren onderverdeeld ongeacht het type.
a // b # = 1
a // c # = 1.0
In Python 3 voert de /
operator 'echte' deling uit, ongeacht de typen. De operator //
voert vloerdeling uit en behoudt het type.
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
Mogelijke combinaties (ingebouwde types):
-
int
enint
(geeft eenint
in Python 2 en eenfloat
in Python 3) -
int
enfloat
(geeft eenfloat
) -
int
encomplex
(geeft eencomplex
) -
float
enfloat
(geeft eenfloat
) -
float
encomplex
(geeft eencomplex
) -
complex
encomplex
(geeft eencomplex
)
Zie PEP 238 voor meer informatie.
exponent
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
Een ander verschil tussen de ingebouwde pow
en math.pow
is dat de ingebouwde pow
drie argumenten kan accepteren:
a, b, c = 2, 3, 2
pow(2, 3, 2) # 0, calculates (2 ** 3) % 2, but as per Python docs,
# does so more efficiently
Speciale functies
De functie math.sqrt(x)
berekent de vierkantswortel van 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)
Om andere wortels te berekenen, zoals een kubuswortel, verhoogt u het getal naar de reciproke graad van de wortel. Dit kan gedaan worden met elk van de exponentiële functies of operator.
import math
x = 8
math.pow(x, 1/3) # evaluates to 2.0
x**(1/3) # evaluates to 2.0
De functie math.exp(x)
berekent e ** x
.
math.exp(0) # 1.0
math.exp(1) # 2.718281828459045 (e)
De functie math.expm1(x)
berekent e ** x - 1
. Wanneer x
klein is, geeft dit een aanzienlijk betere precisie dan 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...
logaritmen
Standaard berekent de functie math.log
de logaritme van een getal, base e. U kunt optioneel een basis opgeven als het tweede argument.
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)
Er zijn speciale variaties van de functie math.log
voor verschillende bases.
# 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)
In-situ bewerkingen
Het is gebruikelijk in applicaties om code als deze te hebben:
a = a + 1
of
a = a * 2
Er is een effectieve snelkoppeling voor deze in-place bewerkingen:
a += 1
# and
a *= 2
Elke wiskundige operator kan vóór het teken '=' worden gebruikt om een interne bewerking uit te voeren:
-
-=
verlaag de variabele op zijn plaats -
+=
verhoog de variabele op zijn plaats -
*=
vermenigvuldig de variabele op zijn plaats -
/=
verdeel de variabele op zijn plaats -
//=
verdieping verdeel de variabele op zijn plaats # Python 3 -
%=
retourneer de modulus van de variabele op zijn plaats -
**=
verheffen tot een macht op zijn plaats
Er bestaan andere operatoren voor de bitsgewijze operatoren ( ^
, |
etc)
Goniometrische functies
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
Merk op dat
math.hypot(x, y)
ook de lengte is van de vector (of Euclidische afstand) vanaf de oorsprong(0, 0)
tot het punt(x, y)
.Om de Euclidische afstand tussen twee punten
(x1, y1)
&(x2, y2)
te berekenen(x2, y2)
kunt umath.hypot
als volgt gebruikenmath.hypot(x2-x1, y2-y1)
Om te converteren van radialen -> graden en graden -> radialen gebruikt u respectievelijk math.degrees
en math.radians
math.degrees(a)
# Out: 57.29577951308232
math.radians(57.29577951308232)
# Out: 1.0
modulus
Zoals in veel andere talen, gebruikt Python de operator %
voor het berekenen van de modulus.
3 % 4 # 3
10 % 2 # 0
6 % 4 # 2
Of door de operator
gebruiken:
import operator
operator.mod(3 , 4) # 3
operator.mod(10 , 2) # 0
operator.mod(6 , 4) # 2
U kunt ook negatieve getallen gebruiken.
-9 % 7 # 5
9 % -7 # -5
-9 % -7 # -2
Als u het resultaat van gehele getallen en modulus moet vinden, kunt u de divmod
functie gebruiken als snelkoppeling:
quotient, remainder = divmod(9, 4)
# quotient = 2, remainder = 1 as 4 * 2 + 1 == 9