Langchain系列文章目录
01-玩转LangChain:从模型调用到Prompt模板与输出解析的完整指南
02-玩转 LangChain Memory 模块:四种记忆类型详解及应用场景全覆盖
03-全面掌握 LangChain:从核心链条构建到动态任务分配的实战指南
04-玩转 LangChain:从文档加载到高效问答系统构建的全程实战
05-玩转 LangChain:深度评估问答系统的三种高效方法(示例生成、手动评估与LLM辅助评估)
06-从 0 到 1 掌握 LangChain Agents:自定义工具 + LLM 打造智能工作流!
python系列文章目录
01-Python 基础语法入门:从变量到输入输出,零基础也能学会!
02-Python 流程控制终极指南:if-else 和 for-while深度解析
03-Python 列表与元组全攻略:从新手到高手的必备指南
04-Python 字典与集合:从入门到精通的全面解析
05-Python函数入门指南:从定义到应用
06-Python 函数高级特性:从默认参数到闭包的全面解析
07-Python 模块与包:从零到自定义的全面指南
08-Python异常处理:从入门到精通的实用指南
09-Python 文件操作:从零基础到日志记录实战
10-Python面向对象编程入门:从类与对象到方法与属性
11-Python类的方法与属性:从入门到进阶的全面解析
前言
在 Python 编程中,列表(List)和元组(Tuple)是最基础也是最常用的两种数据结构。无论是初学者还是有经验的开发者,掌握它们的定义、操作和特点都至关重要。本文将从零开始,带你深入了解 Python 列表和元组的用法,帮助你构建清晰的知识体系。
无论你是想快速入门 Python 数据结构,还是希望在项目中灵活运用列表和元组,这篇文章都将为你提供通俗易懂的解释、实用的代码示例和常见问题解答。
一、Python 列表:灵活多变的数据容器
列表是 Python 中最常用的数据结构之一,因其灵活性和易用性深受开发者喜爱。本节将从列表的定义入手,逐步讲解其基本操作和常用方法,帮助你快速掌握列表的核心用法。
1.1 列表的定义
列表是一种有序的、可变的集合,可以存储任意类型的元素,比如数字、字符串甚至其他列表。它的定义非常简单,使用方括号 []
,元素之间用逗号分隔。
1.1.1 创建列表的基本示例
以下是一个简单的列表创建示例:
my_list = [1, 2, 3, "hello", True]
print(my_list) # 输出: [1, 2, 3, 'hello', True]
关键点:列表中的元素类型可以不同,且顺序会被保留。
1.1.2 为什么选择列表?
列表适合需要频繁修改数据的场景,比如记录动态变化的商品清单、用户输入数据等。它的可变性是与元组最大的区别(后文会对比)。
1.2 列表的基本操作
列表支持四种基本操作:增、删、改、查。下面我们逐一讲解这些操作,并附上代码示例。
1.2.1 增加元素
向列表中添加元素有两种常用方法:
append()
:在列表末尾添加一个元素。insert()
:在指定位置插入元素。
示例代码:
my_list = [1, 2, 3]
my_list.append(4) # 在末尾添加 4
print(my_list) # 输出: [1, 2, 3, 4]
my_list.insert(1, "new") # 在索引 1 处插入 "new"
print(my_list) # 输出: [1, "new", 2, 3, 4]
注意:insert()
需要指定插入位置(索引),从 0 开始计数。
1.2.2 删除元素
删除元素也有两种常见方法:
remove()
:删除指定的元素(第一个匹配项)。pop()
:删除并返回指定位置的元素。
示例代码:
my_list = [1, 2, 3, 2]
my_list.remove(2) # 删除第一个 2
print(my_list) # 输出: [1, 3, 2]
popped_item = my_list.pop(1) # 删除索引 1 处的元素并返回
print(popped_item) # 输出: 3
print(my_list) # 输出: [1, 2]
注意:如果 remove()
的元素不存在,会抛出 ValueError
错误。
1.2.3 修改元素
列表是可变的,可以通过索引直接修改元素内容。
示例代码:
my_list = [1, 2, 3]
my_list[1] = "changed" # 修改索引 1 处的元素
print(my_list) # 输出: [1, "changed", 3]
关键点:索引从 0 开始,超出范围会抛出 IndexError
。
1.2.4 查询元素
查询元素可以使用索引或切片来访问列表内容。
示例代码:
my_list = [10, 20, 30, 40]
print(my_list[0]) # 输出: 10
print(my_list[1:3]) # 输出: [20, 30](从索引 1 到 2,不含 3)
切片语法:[start:stop:step],其中 step
默认是 1。
1.3 列表的常用方法
Python 为列表提供了丰富的内置方法,下面介绍三种最常用的方法:append()
、remove()
和 sort()
。
1.3.1 append() 方法
已经在“增加元素”中介绍过,这里再强调它的简单高效。
示例代码:
my_list = [1, 2]
my_list.append(3)
print(my_list) # 输出: [1, 2, 3]
1.3.2 remove() 方法
删除列表中第一个匹配的元素,适合知道具体值的场景。
示例代码:
my_list = [1, 2, 3, 2]
my_list.remove(2)
print(my_list) # 输出: [1, 3, 2]
1.3.3 sort() 方法
对列表进行升序排序,如果是字符串则按字典序排列。
示例代码:
my_list = [3, 1, 4, 2]
my_list.sort() # 默认升序
print(my_list) # 输出: [1, 2, 3, 4]
my_list.sort(reverse=True) # 降序
print(my_list) # 输出: [4, 3, 2, 1]
注意:sort()
只能用于元素类型一致的列表,否则会报错。
1.3.4 常见问题排查
问题:sort()
报错怎么办?
原因:列表中元素类型不一致(如数字和字符串混合)。
解决:确保元素类型统一,或使用 key
参数自定义排序规则。
二、Python 元组:不可变的“常量”
元组与列表类似,但有一个显著特点:不可变。本节将介绍元组的定义、特点和基本操作,帮助你理解它的独特价值。
2.1 元组的定义
元组是一种有序的、不可变的集合,使用圆括号 ()
定义,元素间用逗号分隔。
2.1.1 创建元组的示例
my_tuple = (1, 2, 3, "hello")
print(my_tuple) # 输出: (1, 2, 3, 'hello')
注意:单个元素的元组需要在元素后加逗号,如 (1,)
,否则会被视为普通值。
2.1.2 元组的应用场景
由于不可变性,元组常用于:
- 保存固定不变的数据(如配置项)。
- 作为字典的键(列表不能作为键)。
2.2 元组的特点
元组的不可变性是其核心特性,下面详细解析它的优势和局限。
2.2.1 不可变性
元组创建后无法修改元素,这保证了数据的安全性。
示例代码:
my_tuple = (1, 2, 3)
# my_tuple[0] = 4 # 报错:TypeError: 'tuple' object does not support item assignment
2.2.2 轻量级
元组比列表占用更少的内存,适合存储简单数据。
示例代码:
import sys
my_list = [1, 2, 3]
my_tuple = (1, 2, 3)
print(sys.getsizeof(my_list)) # 输出: 48(字节)
print(sys.getsizeof(my_tuple)) # 输出: 40(字节)
2.2.3 作为字典键
元组的不可变性使其可以作为字典的键,而列表不行。
示例代码:
my_dict = {(1, 2): "value"}
print(my_dict[(1, 2)]) # 输出: value
2.3 元组的基本操作
虽然元组不可变,但仍支持查询和解包操作。
2.3.1 查询元素
与列表类似,元组支持索引和切片。
示例代码:
my_tuple = (10, 20, 30, 40)
print(my_tuple[0]) # 输出: 10
print(my_tuple[1:3]) # 输出: (20, 30)
2.3.2 元组解包
元组可以直接赋值给多个变量,非常方便。
示例代码:
my_tuple = (1, 2, 3)
a, b, c = my_tuple
print(a, b, c) # 输出: 1 2 3
应用:常用于函数返回多个值时。
三、总结
本文详细讲解了 Python 列表和元组的核心知识。列表是灵活的、可变的,适合动态数据管理;元组是稳定的、不可变的,适合固定数据存储。通过基础操作、常用方法和代码示例,你应该已经掌握了两者的基本用法。
快速回顾:
- 列表:
append()
、remove()
、sort()
等方法,增删改查自由。 - 元组:不可变,轻量级,可作为字典键。