找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

3056

积分

0

好友

408

主题
发表于 4 小时前 | 查看: 4| 回复: 0

Python 提供了丰富的内置函数,它们是进行高效开发的基础。本文将系统性地介绍第一大类:数学运算类函数。熟练掌握这些工具,能让你的数据处理与数值计算事半功倍。

数学运算类函数总览

函数名 功能 基本语法
abs() 求绝对值 abs(x)
divmod() 求商和余数 divmod(a, b)
max() 求最大值 max(iterable)max(a, b, c...)
min() 求最小值 min(iterable)min(a, b, c...)
pow() 幂运算 pow(x, y)pow(x, y, z)
round() 四舍五入 round(number[, ndigits])
sum() 求和 sum(iterable[, start])

1️⃣ abs(x) — 求绝对值

语法详解

  • 参数x — 整数、浮点数或复数。
  • 返回值x 的绝对值。
    • 整数/浮点数:返回非负数值。
    • 复数:返回模(浮点数)。

代码示例

# 整数和浮点数
print(abs(-5))      # 输出: 5
print(abs(3.14))    # 输出: 3.14

# 复数(模 = √(实部² + 虚部²))
print(abs(3+4j))    # 输出: 5.0

# 实际应用:计算两点距离
a, b = -10, 20
d = abs(abs(a) - abs(b))  #在不知道A/B的值是否都为正时 可以先把两个值都先转化成正值,再计算
print(f"距离: {d}")  # 输出: 距离: 30

2️⃣ divmod(a, b) — 求商和余数

语法详解

  • 参数a — 被除数,b — 除数(不能为0)。
  • 返回值:元组 (商, 余数),即 (a // b, a % b)

代码示例

# 基本用法
result = divmod(10, 3)
print(result)           # 输出: (3, 1)

# 解包赋值
q, r = divmod(17, 5)  # divmod(a, b) 得到的值的类型为tuple
print(f"17 ÷ 5 = {q} 余 {r}")  # 输出: 17 ÷ 5 = 3 余 2

# 实际应用:秒数转换
total_seconds = 125
minutes, seconds = divmod(total_seconds, 60)
print(f"{total_seconds}秒 = {minutes}分{seconds}秒")  # 输出: 125秒 = 2分5秒

3️⃣ max() — 求最大值

语法详解

  • 调用方式
    1. max(iterable, *, default=None, key=None) — 对可迭代对象操作。
    2. max(arg1, arg2, *args, key=None) — 对多个参数操作。
  • 关键参数
    • key:指定比较规则的函数。
    • default:可迭代对象为空时的返回值。

代码示例

# 方式1:多个参数
print(max(5, 10, 3))          # 输出: 10

# 方式2:可迭代对象
numbers = [45, 12, 89, 34]
print(max(numbers))           # 输出: 89

# 使用key参数
students = [
    {'name': '小明', 'score': 85},
    {'name': '小红', 'score': 92},
    {'name': '小刚', 'score': 78}
]
top = max(students, key=lambda s: s['score'])
print(f"第一名: {top['name']}")  # 输出: 第一名: 小红

在实际项目中,灵活运用 max()min()key 参数,配合Lambda表达式和列表推导式,是处理复杂数据筛选的常用技巧。


4️⃣ min() — 求最小值

语法详解

  • 调用方式与 max() 完全相同。
  • 功能相反,返回最小值。

代码示例

# 基本用法
print(min(5, 10, 3))          # 输出: 3
print(min([45, 12, 89, 34]))  # 输出: 12

# 使用key参数
lowest = min(students, key=lambda s: s['score'])
print(f"最低分: {lowest['name']}")  # 输出: 最低分: 小刚

# 找绝对值最小的数
numbers = [-10, 5, -3, 8, -2]
closest = min(numbers, key=abs)
print(f"最接近0的数: {closest}")  # 输出: 最接近0的数: -2

5️⃣ pow() — 幂运算

语法详解

  • 调用方式
    • pow(x, y) — 计算 x ** y
    • pow(x, y, z) — 计算 (x ** y) % z,效率更高。
  • 参数要求:使用三个参数时,z 必须为整数且不能为0。

代码示例

# 基本幂运算
print(pow(2, 3))      # 输出: 8
print(pow(5, 2))      # 输出: 25

# 带模数的幂运算
base, exp, mod = 7, 8, 13
result1 = (7 ** 8) % 13
result2 = pow(7, 8, 13)  # 效率更高
print(result1, result2)  # 输出: 9 9

# 实际应用:密码学中常用
print(pow(3, 200, 50))  # 输出: 1

6️⃣ round() — 四舍五入

语法详解

  • 参数
    • number:要处理的数字。
    • ndigits:保留的小数位数,默认0(返回整数)。
  • 重要特性:Python 采用 银行家舍入法(round half to even),对 .5 会取最近的偶数。

代码示例

# 基本用法
print(round(3.14159))       # 输出: 3
print(round(3.14159, 2))    # 输出: 3.14

# 负数ndigits(向左四舍五入)
print(round(1234, -1))      # 输出: 1230
print(round(1264, -2))      # 输出: 1300

# ⚠️ 银行家舍入法
print(round(2.5))           # 输出: 2 (不是3!)
print(round(3.5))           # 输出: 4
print(round(2.675, 2))      # 输出: 2.67 (浮点精度问题)

# 实际应用:价格计算
price, tax_rate = 19.99, 0.0825
total = price * (1 + tax_rate)
print(f"含税价: {round(total, 2)}")  # 输出: 含税价: 21.64

7️⃣ sum() — 求和

语法详解

  • 参数
    • iterable:可迭代对象(列表、元组等)。
    • start:起始值,默认为0。
  • 返回值:从 start 开始累加所有元素。

代码示例

# 基本求和
numbers = [1, 2, 3, 4, 5]
print(sum(numbers))            # 输出: 15

# 指定起始值
print(sum([1, 2, 3, 4, 5], 10)) # 输出: 25

# 求和范围
print(sum(range(1, 101)))      # 输出: 5050

# 实际应用:计算平均值
scores = [85, 92, 78, 90, 88]
average = sum(scores) / len(scores)
print(f"平均分: {average:.2f}")  # 输出: 平均分: 86.60

# 使用生成器表达式
sum_of_squares = sum(x**2 for x in numbers)
print(f"平方和: {sum_of_squares}")  # 输出: 平方和: 55

核心要点速查表

函数 一句话记法
abs() 求绝对值,复数也能用
divmod() 一次返回商和余数
max() 求最大值,还能自定义规则
min() 求最小值,和 max 对着记
pow() 幂运算,三个参数效率高
round() 四舍五入,.5取偶要记牢
sum() 求和计算,从 start 开始加

⚠️ 易错点提醒

  • round(2.5) 返回 2 不是3 — 银行家舍入法。
  • sum() 不能用于字符串拼接 — 请用 ‘’.join()
  • divmod() 的除数不能为0。
  • pow(x, y, z)z 必须为整数。
  • max() 对空序列要设置 default 参数。

掌握这些数学运算函数是写好 Python 代码的第一步。记得在编写涉及数值计算的代码时,遵循 PEP 8 等规范,能让你的代码更专业、更易维护。想了解更多 Python 核心技巧和深入探讨其他内置函数如数据类型转换等话题,可以持续关注相关技术社区的分享。




上一篇:Claude Mythos Preview深度解析:AI如何重塑漏洞发现与利用的攻防格局
下一篇:Minimax定理深度解读:为何“压缩即智能”是AI的底层逻辑?
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-16 21:42 , Processed in 1.287621 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表