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