在 Python 编程中,列表(List)是最基础、最常用的可变序列数据结构之一。它以灵活、易用的特性,成为处理一组有序数据的首选工具,无论是存储简单的数值、字符串,还是复杂的对象集合,列表都能胜任。
本文将从列表的基本概念、创建方式、核心操作、高级用法到实战场景,全面解析 Python 列表的使用方法,帮助初学者夯实基础,也为进阶开发者梳理知识点。
一、列表的基本概念
列表是 Python 中的可变有序序列,具备以下核心特征:
- 有序性:列表中的元素按照插入顺序排列,可通过索引(下标)精准访问。
- 可变性:创建后可随时添加、删除、修改元素,内存地址保持不变。
- 元素多样性:可存储不同数据类型的元素,如整数、字符串、列表、字典甚至函数等。
- 可重复性:允许包含重复的元素。
列表的语法标识为方括号 [] ,元素之间用逗号 , 分隔。例如:[1, "Python", True, [3.14, 2025]] 就是一个典型的混合类型列表。
二、列表的创建与初始化
创建 Python 列表的方式主要有以下几种,可根据实际场景选择:
1. 直接创建
通过方括号包裹元素,直接定义列表,这是最直观的方式。
# 空列表
empty_list = []
# 整数列表
num_list = [1, 2, 3, 4, 5]
# 混合类型列表
mix_list = [10, "Hello", 3.14, [6, 7], True]
print(num_list) # 输出:[1, 2, 3, 4, 5]
print(mix_list) # 输出:[10, 'Hello', 3.14, [6, 7], True]
2. 使用list()构造函数
通过 Python 内置的list()函数,可将其他可迭代对象(如字符串、元组、集合、字典)转换为列表。
# 字符串转列表
str_to_list = list("Python")
print(str_to_list) # 输出:['P', 'y', 't', 'h', 'o', 'n']
# 元组转列表
tuple_to_list = list((1, 2, 3))
print(tuple_to_list) # 输出:[1, 2, 3]
# 字典转列表(默认取键)
dict_to_list = list({"name": "Alice", "age": 20})
print(dict_to_list) # 输出:['name', 'age']
3. 列表推导式
这是 Python 特有的简洁创建方式,通过一行代码基于迭代逻辑生成列表,兼具可读性和效率。
# 生成1-5的平方列表
square_list = [x ** 2 for x in range(1, 6)]
print(square_list) # 输出:[1, 4, 9, 16, 25]
# 带条件的列表推导式:生成1-10的偶数列表
even_list = [x for x in range(1, 11) if x % 2 == 0]
print(even_list) # 输出:[2, 4, 6, 8, 10]
三、列表的核心操作
列表的操作围绕元素访问、增删改查展开,是使用列表的基础,以下是关键操作的详细说明。
1. 元素访问
列表通过索引访问元素,索引从0开始(正向索引),也支持负索引(反向索引,-1表示最后一个元素,-2表示倒数第二个,依此类推)。
若需访问连续的多个元素,可使用切片操作,语法为列表[起始索引:结束索引:步长],切片结果为新列表,不修改原列表。
fruits = ["apple", "banana", "cherry", "date"]
# 正向索引访问
print(fruits[1]) # 输出:banana
# 负索引访问
print(fruits[-2]) # 输出:cherry
# 切片操作
print(fruits[1:3]) # 输出:['banana', 'cherry']
print(fruits[:2]) # 从开头到索引2(不包含),输出:['apple', 'banana']
print(fruits[2:]) # 从索引2到结尾,输出:['cherry', 'date']
print(fruits[::2]) # 步长为2,输出:['apple', 'cherry']
print(fruits[::-1]) # 步长为-1,反转列表,输出:['date', 'cherry', 'banana', 'apple']
2. 元素修改
列表是可变序列,可通过索引直接修改指定位置的元素,或通过切片批量修改。
nums = [1, 2, 3, 4]
# 单个元素修改
nums[2] = 99
print(nums) # 输出:[1, 2, 99, 4]
# 切片批量修改
nums[1:3] = [88, 77]
print(nums) # 输出:[1, 88, 77, 4]
# 切片替换为不同长度的列表
nums[2:] = [5, 6, 7]
print(nums) # 输出:[1, 88, 5, 6, 7]
3. 元素添加
Python 提供了多种向列表中添加元素的方法,适用于不同场景:
append():在列表末尾添加单个元素。extend():在列表末尾添加可迭代对象的所有元素(如列表、字符串)。insert():在指定索引位置插入单个元素。
colors = ["red", "green"]
# append()添加单个元素
colors.append("blue")
print(colors) # 输出:['red', 'green', 'blue']
# extend()添加可迭代对象
colors.extend(["yellow", "purple"])
print(colors) # 输出:['red', 'green', 'blue', 'yellow', 'purple']
# insert()指定位置插入
colors.insert(1, "orange")
print(colors) # 输出:['red', 'orange', 'green', 'blue', 'yellow', 'purple']
4. 元素删除
删除列表元素的方法主要有以下几种,按需选择:
del:通过索引或切片删除元素,无返回值。pop():删除指定索引的元素,返回被删除的元素(默认删除最后一个元素)。remove():删除第一个匹配的指定元素,无返回值(元素不存在会报错)。clear():清空列表所有元素,返回空列表。
animals = ["cat", "dog", "bird", "dog", "fish"]
# del删除指定索引
del animals[2]
print(animals) # 输出:['cat', 'dog', 'dog', 'fish']
# pop()删除并返回元素
pop_animal = animals.pop()
print(pop_animal) # 输出:fish
print(animals) # 输出:['cat', 'dog', 'dog']
# remove()删除第一个匹配元素
animals.remove("dog")
print(animals) # 输出:['cat', 'dog']
# clear()清空列表
animals.clear()
print(animals) # 输出:[]
5. 元素查找与统计
in/not in:判断元素是否存在于列表中,返回布尔值。index():查找指定元素第一个匹配项的索引,元素不存在会报错。count():统计指定元素在列表中出现的次数。
nums = [1, 2, 3, 2, 4, 2]
# 判断元素是否存在
print(3 in nums) # 输出:True
print(5 not in nums)# 输出:True
# 查找元素索引
print(nums.index(2))# 输出:1
# 统计元素出现次数
print(nums.count(2))# 输出:3