Python 函数与数据容器详解:从入门到实战

发布时间:2026/7/20 15:44:27
Python 函数与数据容器详解:从入门到实战 大家好今天我们来详细讲解 Python 中最重要的两个核心概念函数和数据容器。无论你是刚入门的新手还是想巩固基础的老手这篇文章都能帮你系统地掌握这些知识点。 目录一、函数Function1.1 什么是函数1.2 函数的定义和调用1.3 函数的参数1.4 函数的返回值1.5 None 类型二、数据容器Data Container2.1 字符串str2.2 列表list三、实战练习四、总结一、函数Function1.1 什么是函数在 Python 中函数就是将一段具有特定功能的代码组织在一起并给它起一个名字的代码块。你可以通过这个名字来调用它从而执行那段代码。简单理解函数就是“装代码的盒子”你把需要重复使用的逻辑装进去需要用的时候直接喊名字即可。为什么要学习、使用函数呢为了得到一个针对特定需求、可供重复利用的代码段提高程序的复用性减少重复性代码提高开发效率python# 没有使用函数重复代码 print(计算 1 2 , 1 2) print(计算 3 4 , 3 4) print(计算 5 6 , 5 6) # 使用函数封装复用 def add(a, b): return a b print(计算 1 2 , add(1, 2)) print(计算 3 4 , add(3, 4)) print(计算 5 6 , add(5, 6))1.2 函数的定义和调用基本语法pythondef 函数名(传入参数): 函数体 return 返回值调用语法python变量 函数名(参数)⚠️ 注意事项参数如不需要可以省略返回值如不需要可以省略函数必须先定义后使用Python 没有函数声明python# 正确 ✅ def say_hello(): print(Hello World!) say_hello() # 调用 # 错误 ❌ say_goodbye() # NameError: name say_goodbye is not defined def say_goodbye(): print(Goodbye!) 函数小练习练习1封装一个函数计算两个数的和pythondef add(a, b): return a b result add(10, 20) print(f10 20 {result}) # 输出: 10 20 30练习2封装一个函数计算 1-100 之间的累加和pythondef sum_1_to_100(): total 0 for i in range(1, 101): total i return total print(f1 到 100 的累加和为{sum_1_to_100()}) # 输出: 50501.3 函数的参数在函数进行计算时可以接受外部调用时提供的数据这就是参数。pythondef add(x, y): # x 和 y 是形式参数形参 return x y result add(5, 6) # 5 和 6 是实际参数实参 print(result) # 输出: 11形参与实参形式参数形参函数定义中提供的参数表示函数声明将要使用这个参数实际参数实参函数调用中提供的参数表示函数执行时真正使用的参数值参数之间使用逗号进行分隔传入时按照顺序传入数据。1.4 函数的返回值所谓返回值就是程序中函数完成事情后最后给调用者的结果。pythondef add(a, b): return a b # return 关键字返回结果 result add(3, 5) # 变量 result 接收返回值 print(result) # 输出: 8⚠️ 注意函数体在遇到return后就结束了所以写在return后的代码不会执行。pythondef test(): print(第一行) return 100 print(第二行) # 这行代码永远不会执行 print(test()) # 输出: 第一行 \n 1001.5 None 类型Python 中有一个特殊的字面量None其类型是class NoneType。无返回值的函数实际上就是返回了None这个字面量。None表示空的、无实际意义的意思。函数返回的None就表示这个函数没有返回什么有意义的内容也就是返回了空的意思。pythondef say_hello(): print(Hello....) result say_hello() # 使用变量接收返回值 print(result) # 输出: None print(type(result)) # 输出: class NoneType 小知识Python 中print()函数的返回值也是None。pythonresult print(Hello) print(result) # 输出: None二、数据容器Data Container数据容器在 Python 中就是指用来批量存储和管理数据的盒子或容器。你可以把它们理解为专门存放数据的收纳工具。生活中你有衣柜装衣服、书架装书、冰箱装食物。编程中你需要列表装一组数据、字典装带标签的数据等。为什么学习数据容器思考一个问题如果我想要在程序中记录 5 名学生的信息如姓名。python# ❌ 不高级且低效定义 5 个变量 name1 王丽红 name2 周杰轮 name3 林俊节 name4 张学油 name5 刘德滑 # ✅ 优雅且高效一个变量搞定 name_list [王丽红, 周杰轮, 林俊节, 张学油, 刘德滑] print(name_list) # 输出: [王丽红, 周杰轮, 林俊节, 张学油, 刘德滑]这就是数据容器——一个容器可以容纳多份数据。学习数据容器就是为了批量存储或批量使用多份数据。Python 中的数据容器Python 中主要的数据容器包括容器类型特点是否可变是否有序字符串str字符的容器❌ 不可变✅ 有序列表list最灵活的容器✅ 可变✅ 有序元组tuple不可变的列表❌ 不可变✅ 有序集合set去重、无序✅ 可变❌ 无序字典dict键值对存储✅ 可变✅ 有序3.7容纳的每一份数据称之为元素存储可以是任意类型的数据如字符串、数字、布尔等。2.1 字符串str尽管字符串看起来并不像列表、元组那样一看就是存放了许多数据的容器。但不可否认的是字符串同样也是数据容器的一员。字符串是字符的容器一个字符串可以存放任意数量的字符。如字符串 ITHEIMA 存放了 6 个字符。2.1.1 字符串的下标索引和其它容器如列表、元组一样字符串也可以通过下标索引进行访问。pythonname ITHEIMA # 从前向后下标从 0 开始 print(name[0]) # 输出: I print(name[2]) # 输出: H # 从后向前下标从 -1 开始 print(name[-1]) # 输出: A print(name[-3]) # 输出: I⚠️ 注意字符串是一个无法修改的数据容器同元组一样。pythonname ITHEIMA # name[0] A # ❌ TypeError: str object does not support item assignment2.1.2 字符串的常用操作① 查找特定字符串的下标索引值pythonmy_str ITCAST ITHEIMA AND print(my_str.index(AND)) # 输出: 13查找 AND 的起始位置② 统计字符串中某字符串的出现次数pythonmy_str ITCAST ITHEIMA AND print(my_str.count(IT)) # 输出: 2③ 统计字符串的长度pythonmy_str 温州程序员1234!#$ print(len(my_str)) # 输出: 13注意数字、字母、符号、中文均算作 1 个字符。编号操作说明1字符串[下标]根据下标索引取出特定位置字符2字符串.index(字符串)查找给定字符的第一个匹配项的下标3字符串.count(字符串)统计字符串内某字符串的出现次数4len(字符串)统计字符串的字符个数2.1.3 字符串的特有操作① 字符串的替换replace()pythonname ITCAST ITHEIMA new_name name.replace(IT, AI) print(new_name) # 输出: AICAST AIHEIMA print(name) # 输出: ITCAST ITHEIMA原字符串不变⚠️注意replace()不会修改原字符串本身而是得到一个新字符串。② 字符串的分割split()pythonname 清华大学 交通大学 温州程序员 牛津大学 name_list name.split( ) # 按照空格分割 print(name_list) # 输出: [清华大学, 交通大学, 温州程序员, 牛津大学] print(type(name_list)) # 输出: class list⚠️注意split()不会修改原字符串而是得到一个新的列表对象。③ 字符串的规整操作strip()去除首尾空格pythonmy_str ITCAST ITHEIMA AND print(my_str.strip()) # 输出: ITCAST ITHEIMA AND去除首尾指定字符串pythonmy_str 12ITHEIMA AND ITCAST21 print(my_str.strip(12)) # 输出: ITHEIMA AND ITCAST⚠️注意传入的是12其实就是1和2都会移除是按照单个字符移除的。编号操作说明1字符串.replace(字符串1, 字符串2)将字符串内的全部字符串1替换为字符串2不修改原字符串2字符串.split(分隔符字符串)按照给定字符串对原字符串进行分隔得到一个新列表3字符串.strip()移除首尾的空格和换行符4字符串.strip(字符串)移除首尾的指定字符串2.1.4 字符串的遍历同列表、元组一样字符串也支持while循环和for循环进行遍历。pythonmy_str 温州程序员 # while 循环遍历 index 0 while index len(my_str): print(my_str[index]) index 1 # for 循环遍历 for char in my_str: print(char)✅ 字符串的特点总结特点说明存储类型✅ 只可以存储字符串字符长度✅ 任意取决于内存大小下标索引✅ 支持重复元素✅ 允许重复字符串存在可修改❌ 不可以修改增加或删除元素等循环✅ 支持 for 循环和 while 循环2.2 列表list列表list是 Python 中最常用、最灵活的一种数据容器。简单来说列表就是一个有序的、可变的、可以存放任意类型数据的大口袋。你可以把列表想象成一个购物车你可以往里面放任何东西数字、文字、甚至其他购物车可以随时加东西、拿走东西或者把里面的某个东西换成别的而且里面的东西是按你放的顺序排列的。2.2.1 列表的定义基本语法python# 字面量 [元素1, 元素2, 元素3, 元素4, ...] # 定义变量 变量名称 [元素1, 元素2, 元素3, 元素4, ...] # 定义空列表 变量名称 [] 变量名称 list()特点列表内的每一个数据称之为元素以[]作为标识列表内每一个元素之间用逗号,隔开列表可以一次存储多个数据且可以为不同的数据类型支持嵌套python# 基础列表 name_list [ITHEIMA, ITCAST, PYTHON] print(name_list) # 输出: [ITHEIMA, ITCAST, PYTHON] print(type(name_list)) # 输出: class list # 不同类型混装 my_list [ITHEIMA, 666, True] print(my_list) # 输出: [ITHEIMA, 666, True] # 嵌套列表 my_list [[1, 2, 3], [4, 5, 6]] print(my_list) # 输出: [[1, 2, 3], [4, 5, 6]]2.2.2 列表的下标索引如何从列表中取出特定位置的数据呢我们可以使用下标索引。pythonname_list [TOM, LILY, ROSE] # 正向索引从 0 开始 print(name_list[0]) # 输出: TOM print(name_list[1]) # 输出: LILY print(name_list[2]) # 输出: ROSE # 反向索引从 -1 开始 print(name_list[-1]) # 输出: ROSE print(name_list[-2]) # 输出: LILY print(name_list[-3]) # 输出: TOM2.2.3 嵌套列表的下标索引如果列表是嵌套的列表同样支持下标索引。python# 2层嵌套列表 my_list [[1, 2, 3], [4, 5, 6]] # 获取内层第一个列表 print(my_list[0]) # 输出: [1, 2, 3] # 获取内层第一个列表的第一个元素 print(my_list[0][0]) # 输出: 12.2.4 列表的常用操作方法① 查找某元素的下标index()pythonmy_list [ITHEIMA, ITCAST, PYTHON] print(my_list.index(ITCAST)) # 输出: 1 # 如果找不到报错 ValueError② 修改特定位置的元素值pythonmy_list [1, 2, 3] my_list[0] 5 print(my_list) # 输出: [5, 2, 3] # 也支持反向索引 my_list[-3] 10 print(my_list) # 输出: [10, 2, 3]③ 插入元素insert()pythonmy_list [1, 2, 3] my_list.insert(1, ITHEIMA) # 在下标 1 处插入元素 print(my_list) # 输出: [1, ITHEIMA, 2, 3]④ 追加元素append()pythonmy_list [1, 2, 3] my_list.append(4) print(my_list) # 输出: [1, 2, 3, 4] # 追加列表作为整体添加 my_list.append([5, 6]) print(my_list) # 输出: [1, 2, 3, 4, [5, 6]]⑤ 追加元素方式2extend()pythonmy_list [1, 2, 3] my_list.extend([4, 5, 6]) # 将列表内容拆开依次追加 print(my_list) # 输出: [1, 2, 3, 4, 5, 6]⑥ 删除元素del/pop()pythonmy_list [1, 2, 3] # 方式1del 语句 del my_list[0] print(my_list) # 输出: [2, 3] # 方式2pop() 方法 my_list [1, 2, 3] my_list.pop(0) print(my_list) # 输出: [2, 3]⑦ 删除指定元素remove()pythonmy_list [1, 2, 3, 2, 3] my_list.remove(2) # 从前向后删除此元素第一个匹配项 print(my_list) # 输出: [1, 3, 2, 3]⑧ 清空列表clear()pythonmy_list [1, 2, 3] my_list.clear() print(my_list) # 输出: []⑨ 统计某元素在列表内的数量count()pythonmy_list [1, 1, 1, 2, 3] print(my_list.count(1)) # 输出: 3⑩ 统计列表内有多少元素len()pythonmy_list [1, 2, 3, 4, 5] print(len(my_list)) # 输出: 5 列表常用操作总览编号操作作用1列表.append(元素)向列表中追加一个元素2列表.extend(容器)将数据容器的内容依次取出追加到表尾部3列表.insert(下标, 元素)在指定下标处插入指定的元素4del 列表[下标]删除列表指定下标元素5列表.pop(下标)删除列表指定下标元素6列表.remove(元素)从前向后删除此元素第一个匹配项7列表.clear()清空列表8列表.count(元素)统计此元素在列表中出现的次数9列表.index(元素)查找指定元素在列表的下标找不到报错 ValueError10len(列表)统计容器内有多少元素提示功能方法非常多不需要硬记下来。除了经常用的大多数是记忆不下来的。我们要做的是有一个模糊印象知晓有这样的用法即可。需要的时候随时查阅资料即可。2.2.5 列表的遍历while 循环遍历pythonmy_list [1, 2, 3, 4, 5] index 0 while index len(my_list): print(my_list[index]) index 1for 循环遍历pythonmy_list [1, 2, 3, 4, 5] for i in my_list: print(i)✅ 列表的特点总结特点说明元素数量✅ 可以容纳多个元素元素类型✅ 可以容纳不同类型的元素混装数据顺序✅ 数据是有序存储的有下标序号重复元素✅ 允许重复数据存在可修改✅ 可以修改增加或删除元素等循环✅ 支持 for 循环和 while 循环三、实战练习练习1随机抽选列表里面包含 4 个数据迪丽热巴,古力娜扎,佟丽丫丫,玛尔扎哈随机抽出一个控制台打印。pythonimport random names [迪丽热巴, 古力娜扎, 佟丽丫丫, 玛尔扎哈] random_name random.choice(names) # 随机选择一个 print(f抽选结果{random_name})练习2求列表元素的总和和平均值求列表[2, 6, 1, 7, 4]里面所有元素的和以及平均值。pythonnumbers [2, 6, 1, 7, 4] total sum(numbers) # 使用内置 sum 函数 average total / len(numbers) print(f总和{total}平均值{average:.2f}) # 输出: 总和20平均值4.00练习3求列表中的最大值求列表[2, 6, 1, 25, 7]中的最大值。pythonnumbers [2, 6, 1, 25, 7] # 方法1使用 max 函数 print(max(numbers)) # 输出: 25 # 方法2手动实现 max_value numbers[0] # 默认最大值取列表中的第一个元素 for num in numbers: if num max_value: max_value num print(f最大值{max_value}) # 输出: 最大值25练习4列表筛选大于等于10将列表[2, 0, 6, 1, 77, 0, 52, 0, 25, 7]中大于等于 10 的元素选出来放入新列表中。pythonnumbers [2, 0, 6, 1, 77, 0, 52, 0, 25, 7] new_list [] for num in numbers: if num 10: new_list.append(num) print(f原列表{numbers}) print(f筛选结果10{new_list}) # 输出: [77, 52, 25]练习5列表筛选过滤0将列表[2, 0, 6, 1, 77, 0, 52, 0, 25, 7]筛选形成一个不包含 0 的新列表。pythonnumbers [2, 0, 6, 1, 77, 0, 52, 0, 25, 7] # 方法1使用 for 循环 new_list [] for num in numbers: if num ! 0: new_list.append(num) # 方法2使用列表推导式更 Pythonic new_list [num for num in numbers if num ! 0] print(f原列表{numbers}) print(f筛选结果不含0{new_list}) # 输出: [2, 6, 1, 77, 52, 25, 7]四、总结函数核心要点概念说明定义def 函数名(参数):调用函数名(参数)返回值return 值无返回值返回None注意事项函数必须先定义后使用列表 vs 字符串对比特性列表list字符串str可修改✅❌元素类型任意类型仅字符下标索引✅✅重复元素✅✅遍历方式for / whilefor / while最后提醒函数和数据容器是 Python 编程的基石掌握好它们你就能写出更加优雅、高效的代码。不要死记硬背方法多敲代码、多练习自然就熟练了如果觉得有帮助欢迎点赞、收藏、评论