Python函数:内置函数(len_max_min_sorted等)详解

Python函数:内置函数(len/max/min/sorted等)详解

本章学习目标

深入理解Python高频内置函数 len、max、min、sorted、sum、zip 等核心概念、底层原理与使用规范,熟练掌握各类内置函数的基础用法、参数配置、进阶场景与避坑技巧,区分易混淆内置函数的差异,掌握生产环境最佳实践。本文属于《Python从入门到精通教程》Python函数篇(第四篇)。

在上一章,我们学习了 Python函数:匿名函数lambda的定义与使用场景 ,掌握了简洁高效的匿名函数编写与实战用法。本章我们将聚焦Python原生内置函数,内置函数是Python无需导入、开箱即用的核心工具,是日常数据处理、业务开发的基础核心,也是Python极简编程的核心体现。

一、核心概念与背景

1.1 什么是Python内置函数?

基本定义

Python内置函数是Python解释器自带、无需手动导入模块、可直接调用的原生函数,随Python环境安装即可使用。内置函数封装了底层复杂的逻辑,极大简化了代码编写难度,是Pythonic编程风格的核心组成部分。

我们日常开发中最常用的高频内置函数:len()、max()、min()、sorted()、sum()、zip()、map()、filter(),覆盖90%以上的基础数据处理场景。

1.2 内置函数的核心价值与重要性

重要性分析

  • 极致高效:内置函数底层由C语言实现,执行速度远快于自定义Python循环代码

  • 代码极简:一行代码实现数据统计、排序、遍历筛选,大幅减少冗余代码

  • 通用性强:适配列表、元组、字符串、字典等绝大多数可迭代对象

  • 稳定性高:官方原生封装,无BUG隐患,兼容性适配所有Python版本

  • 开发必备:基础开发、数据分析、算法刷题、项目实战高频必用

1.3 典型应用场景

场景类型 具体应用 核心使用函数
数据统计 统计数据长度、最值、总和、均值计算 len、max、min、sum
数据排序 列表、元组、字符串正向/反向排序、自定义排序 sorted
数据整合 多序列配对合并、批量数据映射转换 zip、map
数据筛选 过滤不符合条件的数据、清洗无效数据 filter

二、高频内置函数逐行详解(实战级)

2.1 len():获取对象长度/元素个数

核心作用:统计可迭代对象的元素个数,支持字符串、列表、元组、字典、集合等。

语法格式len(object)

python 复制代码
# 字符串长度
str_data = "Python内置函数"
print(len(str_data))  # 8

# 列表元素个数
list_data = [1, 2, 3, 4, 5]
print(len(list_data))  # 5

# 字典统计键值对个数
dict_data = {"name": "张三", "age": 20}
print(len(dict_data))  # 2

避坑点:不支持整数、浮点数、数字类型,直接传入会直接报错。

2.2 max() / min():获取最值

核心作用:max() 获取最大值,min() 获取最小值,支持多参数、可迭代对象,搭配key可实现自定义规则最值获取。

语法格式max(*args, key=None) / min(*args, key=None)

python 复制代码
# 基础用法:序列最值
nums = [12, 45, 7, 89, 23]
print(max(nums))  # 89
print(min(nums))  # 7

# 多参数直接比较
print(max(10, 30, 20))  # 30

# 进阶:key自定义规则(按字符串长度取最值)
words = ["python", "java", "go", "javascript"]
print(max(words, key=lambda x: len(x)))  # javascript
print(min(words, key=lambda x: len(x)))  # go

2.3 sorted():全局排序函数(重点)

核心作用 :对可迭代对象进行排序,返回新序列,不修改原数据,支持升降序、自定义规则排序,是开发最常用的排序方式。

语法格式sorted(iterable, reverse=False, key=None)

  • reverse:False 升序(默认),True 降序

  • key:自定义排序规则,接收函数

python 复制代码
# 基础升序
nums = [5, 2, 9, 1, 5, 6]
new_nums1 = sorted(nums)
print("升序排序:", new_nums1)  # [1, 2, 5, 5, 6, 9]

# 降序排序
new_nums2 = sorted(nums, reverse=True)
print("降序排序:", new_nums2)  # [9, 6, 5, 5, 2, 1]

# 自定义排序:按数字绝对值排序
abs_nums = [-5, 3, -9, 1]
new_nums3 = sorted(abs_nums, key=lambda x: abs(x))
print("绝对值排序:", new_nums3)  # [1, 3, -5, -9]

# 原数据不变
print("原列表:", nums)  # [5, 2, 9, 1, 5, 6]

拓展区别 :列表自带的 sort() 方法会修改原列表、无返回值;sorted() 生成新列表、不改动原数据,生产环境优先使用sorted。

2.4 sum():序列求和

核心作用:对数值型可迭代对象求和,支持设置初始值。

语法格式sum(iterable, start=0)

python 复制代码
# 基础求和
nums = [1, 2, 3, 4, 5]
print(sum(nums))  # 15

# 设置初始值(总和+初始值)
print(sum(nums, start=10))  # 25

避坑点:仅支持数值类型,字符串序列无法直接求和。

2.5 zip():多序列配对整合

核心作用:将多个可迭代对象对应位置元素打包成元组,返回迭代器,常用于多列表关联遍历。

python 复制代码
name_list = ["张三", "李四", "王五"]
age_list = [18, 20, 19]

# 配对整合
zip_data = zip(name_list, age_list)
print(list(zip_data))  # [('张三', 18), ('李四', 20), ('王五', 19)]

# 配对遍历
for name, age in zip(name_list, age_list):
    print(f"姓名:{name},年龄:{age}")

特性:以最短序列为准,多余元素自动舍弃。

2.6 map()/filter():映射与筛选

map:对序列所有元素批量执行同一规则,实现数据批量转换

filter:根据规则过滤序列,保留符合条件的元素

python 复制代码
# map批量转换:数字转平方
nums = [1, 2, 3, 4]
square_nums = list(map(lambda x: x ** 2, nums))
print(square_nums)  # [1, 4, 9, 16]

# filter数据筛选:保留偶数
even_nums = list(filter(lambda x: x % 2 == 0, nums))
print(even_nums)  # [2, 4]

三、内置函数综合实战案例

结合以上高频函数,实现学生成绩数据统计分析综合案例,适配真实业务场景:

python 复制代码
# 学生成绩数据
student_scores = [
    ("张三", 88),
    ("李四", 95),
    ("王五", 76),
    ("赵六", 92)
]

# 1. 统计学生人数
total = len(student_scores)
print(f"学生总人数:{total}")

# 2. 获取最高分、最低分学生
max_score = max(student_scores, key=lambda x: x[1])
min_score = min(student_scores, key=lambda x: x[1])
print(f"最高分:{max_score[0]},分数:{max_score[1]}")
print(f"最低分:{min_score[0]},分数:{min_score[1]}")

# 3. 成绩排序(降序)
sort_scores = sorted(student_scores, key=lambda x: x[1], reverse=True)
print("成绩降序排名:", sort_scores)

# 4. 计算总分、平均分
score_list = [score for name, score in student_scores]
total_score = sum(score_list)
avg_score = total_score / total
print(f"总分:{total_score},平均分:{avg_score:.2f}")

运行结果

python 复制代码
学生总人数:4
最高分:李四,分数:95
最低分:王五,分数:76
成绩降序排名: [('李四', 95), ('赵六', 92), ('张三', 88), ('王五', 76)]
总分:351,平均分:87.75

四、常见报错与解决方案

4.1 max/min 空序列报错

报错现象ValueError: max() arg is an empty sequence

原因:对空列表、空序列执行最值获取

解决方案:先判断序列是否为空,再执行操作

4.2 sorted 多类型排序报错

报错现象:不同数据类型无法比较(如int和str)

解决方案:统一序列数据类型,通过key强制类型转换

4.3 sum 非数值序列报错

解决方案:过滤非数值元素,确保序列全部为int/float类型

五、内置函数最佳实践

  1. 优先使用内置函数:数据统计、排序、筛选优先用原生内置函数,替代自定义循环,效率更高、代码更简洁

  2. 区分sorted与sort:需要保留原数据用sorted(),无需保留原数据用list.sort()

  3. 搭配lambda使用:复杂排序、最值筛选场景,结合匿名函数实现自定义规则

  4. 增加空值判断:处理未知数据时,先判断序列非空,避免空序列报错

  5. 避免重复调用:多次使用的统计结果,提前赋值存储,减少重复计算

六、本章小结

6.1 核心要点回顾

  • 内置函数原生无需导入、执行高效,是Python基础开发核心工具

  • len统计长度、max/min获取最值、sum求和,适配所有可迭代对象

  • sorted支持自定义排序,不修改原数据,是排序首选方案

  • zip/map/filter实现数据整合、转换、筛选,适配批量数据处理

-掌握常见报错避坑点,适配生产环境稳定开发

6.2 学习建议

内置函数看似简单,却是Python高效编程的根基。建议新手摒弃手写循环实现统计、排序的习惯,熟练掌握内置函数的自定义key规则,能够大幅提升代码简洁度与运行效率。