Skip to content

Python3 常用数学函数详解

本篇教程将介绍 Python3 中常用的几个内置数学函数,帮助你更好地进行数值计算和数据处理。我们会通过示例代码,让你理解每个函数的作用和用法。

1. abs() - 求绝对值

abs(x) 函数用于返回数字 x 的绝对值。 它可以处理整数 (int)、浮点数 (float) 和复数 (complex)。

  • 整数和浮点数: 返回其正值。
  • 复数: 返回其模(magnitude),也就是复数在复平面上到原点的距离。
python
>>> abs(-2.3)
2.3
>>> abs(-10)
10
>>> abs(2 + 2j)  # 复数的模,相当于 sqrt(2**2 + 2**2)
2.8284271247461903

补充说明: 复数的模的计算公式是:sqrt(a^2 + b^2),其中 a 是复数的实部,b 是复数的虚部。

2. round() - 四舍五入

round(x [, ndigits]) 函数用于将浮点数 x 四舍五入到小数点后 ndigits 位。

  • ndigits 参数: 可选参数,指定保留的小数位数。
  • 返回值: 四舍五入后的浮点数。 如果不提供 ndigits,则四舍五入到最接近的整数。
  • 特殊情况: 当遇到 0.5 时的舍入规则。Python 3 采用 "round half to even" 策略,即舍入到最接近的偶数。 这有助于避免统计上的偏差。
python
>>> round(2.33462398)  # 不指定 ndigits,舍入到最接近的整数
2
>>> round(2.33462398, 3)  # 指定 ndigits=3,保留三位小数
2.335
>>> round(2.5)  # 舍入到最接近的偶数
2
>>> round(3.5)  # 舍入到最接近的偶数
4

注意: 这种舍入规则可能与你习惯的四舍五入有所不同,需要特别留意。

3. sum() - 求和

sum(iterable [, start]) 函数用于计算可迭代对象(listtuplerangeset 等)中所有元素的总和。

  • iterable 参数: 必需参数,必须是一个可迭代对象,如列表、元组等。
  • start 参数: 可选参数,指定起始值,会将 start 的值加到总和中。
  • 返回值: 所有元素的总和加上 start 的值。
python
>>> sum([1, 2, -1])  # 列表求和
2
>>> sum((1, 2, -1))  # 元组求和
2
>>> sum([1, 2, -1], 10)  # 列表求和,起始值为 10
12

适用场景: sum() 函数在数据分析、统计计算等方面非常常用。

4. min() - 求最小值

min(iterable) 函数用于返回可迭代对象(listtuplerangestrset 等)中的最小值。

  • 参数: 可以是可迭代对象,也可以是多个参数 min(arg1, arg2, ...)
  • 字符串: 如果是字符串,则返回 ASCII 值最小的字符。
python
>>> min([1, 2, -1])  # 列表求最小值
-1
>>> min(1, 2, -1)  # 多个参数求最小值
-1

>>> min("hello")  # 字符串求 ASCII 值最小的字符
'e'

5. max() - 求最大值

max(iterable) 函数用于返回可迭代对象(listtuplerangestrset 等)中的最大值。

  • 参数: 可以是可迭代对象,也可以是多个参数 max(arg1, arg2, ...)
  • 字符串: 如果是字符串,则返回 ASCII 值最大的字符。
python
>>> max([1, 2, -1])  # 列表求最大值
2
>>> max(1, 2, -1)  # 多个参数求最大值
2

>>> max("hello")  # 字符串求 ASCII 值最大的字符
'o'

6. pow() - 求幂

pow(base, exp [, mod]) 函数用于计算 baseexp 次方,即 base**exp

  • base 参数: 底数,可以是整数或浮点数。
  • exp 参数: 指数,可以是整数或浮点数。
  • mod 参数: 可选参数,如果提供,则返回 (base**exp) % mod 的结果。
python
>>> pow(3, 2, 7)  # (3**2) % 7 = 9 % 7 = 2
2
>>> pow(1.4141, 2)
1.9996788099999998

效率: 当需要计算 (base**exp) % mod 时,使用 pow(base, exp, mod) 比先计算 base**exp 再求余更高效。

7. divmod() - 求商和余数

divmod(a, b) 函数用于计算 a 除以 b 的商和余数,返回一个元组 (a // b, a % b)

  • 参数: ab 可以是整数或浮点数。
  • 返回值: 一个元组,包含商(整数除法的结果)和余数。
python
>>> divmod(23, 3.5)  # 23 = 6.0 * 3.5 + 2.0
(6.0, 2.0)
>>> divmod(-10, 7)  # -10 = -2 * 7 + 4
(-2, 4)

应用场景: divmod() 函数常用于分页计算、时间处理等场景。 例如,可以将总秒数通过 divmod() 计算出小时、分钟和秒。