列表(List)是 Python 中最常用的数据类型之一,它是一个有序、可变的集合,可以包含不同类型的元素。列表用方括号 []
表示,元素之间用逗号分隔。
目录
1. 访问列表中的值
与字符串的索引一样,列表索引从 0 开始,第二个索引是 1,依此类推。
通过索引列表可以进行截取、组合等操作。
可以通过索引和切片来访问列表中的元素:
my_list = ['apple', 'banana', 'cherry', 'orange']
# 通过索引访问
print(my_list[0]) # 输出: 'apple' (正向索引从0开始)
print(my_list[-1]) # 输出: 'orange' (负索引表示从末尾开始)
# 通过切片访问
print(my_list[1:3]) # 输出: ['banana', 'cherry'] (从索引1到2)
print(my_list[:2]) # 输出: ['apple', 'banana'] (从开始到索引1)
print(my_list[2:]) # 输出: ['cherry', 'orange'] (从索引2到末尾)
print(my_list[::2]) # 输出: ['apple', 'cherry'] (步长为2)
2. 更新列表
可以对列表的数据项进行修改或更新,也可以使用 append() 方法来添加列表项
列表是可变的,可以直接修改列表中的元素:
my_list = ['apple', 'banana', 'cherry']
# 修改单个元素
my_list[1] = 'blueberry'
print(my_list) # 输出: ['apple', 'blueberry', 'cherry']
# 修改切片
my_list[1:3] = ['banana', 'orange']
print(my_list) # 输出: ['apple', 'banana', 'orange']
# 添加元素
my_list.append('grape') # 在末尾添加
print(my_list) # 输出: ['apple', 'banana', 'orange', 'grape']
my_list.insert(1, 'pear') # 在索引1处插入
print(my_list) # 输出: ['apple', 'pear', 'banana', 'orange', 'grape']
3. 删除列表元素
有多种方法可以删除列表中的元素:
可以使用 del 、.pop、.remove、.clear语句来删除列表中的元素
my_list = ['apple', 'banana', 'cherry', 'orange', 'grape']
# 根据索引删除
del my_list[0]
print(my_list) # 输出: ['banana', 'cherry', 'orange', 'grape']
# 删除并返回被删除的元素
popped = my_list.pop(1) # 删除索引1的元素
print(popped) # 输出: 'cherry'
print(my_list) # 输出: ['banana', 'orange', 'grape']
# 根据值删除
my_list.remove('orange')
print(my_list) # 输出: ['banana', 'grape']
# 清空列表
my_list.clear()
print(my_list) # 输出: []
4. Python列表脚本操作符
列表支持多种操作符:
Python 表达式 | 结果 | 描述 |
---|---|---|
len([1, 2, 3]) | 3 | 长度 |
[1, 2, 3] + [4, 5, 6] | [1, 2, 3, 4, 5, 6] | 组合 |
['Hi!'] * 4 | ['Hi!', 'Hi!', 'Hi!', 'Hi!'] | 重复 |
3 in [1, 2, 3] | True | 元素是否存在于列表中 |
for x in [1, 2, 3]: print(x, end=" ") | 1 2 3 | 迭代 |
list1 = [1, 2, 3]
list2 = [4, 5, 6]
# 拼接
print(list1 + list2) # 输出: [1, 2, 3, 4, 5, 6]
# 重复
print(list1 * 3) # 输出: [1, 2, 3, 1, 2, 3, 1, 2, 3]
# 成员判断
print(3 in list1) # 输出: True
print(7 not in list1) # 输出: True
5. Python 列表截取与拼接
列表切片和拼接非常灵活:
# 切片
nums = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
print(nums[2:7]) # 输出: [2, 3, 4, 5, 6]
print(nums[::2]) # 输出: [0, 2, 4, 6, 8] (步长为2)
print(nums[::-1]) # 输出: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] (反转列表)
# 拼接
part1 = [1, 2, 3]
part2 = [4, 5, 6]
combined = part1 + part2
print(combined) # 输出: [1, 2, 3, 4, 5, 6]
6. 嵌套列表
列表可以包含其他列表,形成多维结构:
# 二维列表
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# 访问嵌套列表元素
print(matrix[0][1]) # 输出: 2 (第一行第二列)
# 遍历嵌套列表
for row in matrix:
for num in row:
print(num, end=' ')
print()
# 输出:
# 1 2 3
# 4 5 6
# 7 8 9
7. 列表比较
列表可以使用比较运算符进行比较:
list1 = [1, 2, 3]
list2 = [1, 2, 4]
list3 = [1, 2, 3]
print(list1 == list3) # True (元素相同)
print(list1 == list2) # False
print(list1 < list2) # True (逐个元素比较)
print([1, 2] < [1, 2, 3]) # True (短列表小于长列表)
列表比较需要引入 operator 模块的 eq 方法
# 导入 operator 模块
import operator
a = [1, 2]
b = [2, 3]
c = [2, 3]
print("operator.eq(a,b): ", operator.eq(a,b)) #False
print("operator.eq(c,b): ", operator.eq(c,b)) #True
8. Python列表函数
Python 提供了一些内置函数用于操作列表:
序号 | 函数 |
---|---|
1 | len(list) 列表元素个数 |
2 | max(list) 返回列表元素最大值 |
3 | min(list) 返回列表元素最小值 |
4 | list(seq) 将元组转换为列表 |
nums = [3, 1, 4, 1, 5, 9, 2]
# 长度
print(len(nums)) # 7
# 最大值和最小值
print(max(nums)) # 9
print(min(nums)) # 1
# 求和
print(sum(nums)) # 25
# 排序(返回新列表)
print(sorted(nums)) # [1, 1, 2, 3, 4, 5, 9]
# 枚举
for index, value in enumerate(nums):
print(f"Index {index}: {value}")
# 输出:
# Index 0: 3
# Index 1: 1
# Index 2: 4
# ...
9. Python列表方法
列表对象提供了许多有用的方法:
序号 | 方法 |
---|---|
1 | list.append(obj) 在列表末尾添加新的对象 |
2 | list.count(obj) 统计某个元素在列表中出现的次数 |
3 | list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
4 | list.index(obj) 从列表中找出某个值第一个匹配项的索引位置 |
5 | list.insert(index, obj) 将对象插入列表 |
6 | list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
7 | list.remove(obj) 移除列表中某个值的第一个匹配项 |
8 | list.reverse() 反向列表中元素 |
9 | list.sort( key=None, reverse=False) 对原列表进行排序 |
10 | list.clear() 清空列表 |
11 | list.copy() 复制列表 |
9.1 添加元素
fruits = ['apple', 'banana']
# 追加元素
fruits.append('orange')
print(fruits) # ['apple', 'banana', 'orange']
# 插入元素
fruits.insert(1, 'pear')
print(fruits) # ['apple', 'pear', 'banana', 'orange']
# 扩展列表
fruits.extend(['grape', 'melon'])
print(fruits) # ['apple', 'pear', 'banana', 'orange', 'grape', 'melon']
9.2 删除元素
numbers = [1, 2, 3, 2, 4, 2, 5]
# 移除第一个匹配项
numbers.remove(2)
print(numbers) # [1, 3, 2, 4, 2, 5]
# 弹出指定位置元素
popped = numbers.pop(2)
print(popped) # 2
print(numbers) # [1, 3, 4, 2, 5]
# 清空列表
numbers.clear()
print(numbers) # []
9.3 查找和统计
letters = ['a', 'b', 'c', 'a', 'b', 'a']
# 计数
print(letters.count('a')) # 3
# 查找索引
print(letters.index('b')) # 1 (第一个'b'的位置)
print(letters.index('b', 2)) # 4 (从索引2开始查找)
9.4 排序和反转
nums = [3, 1, 4, 1, 5, 9, 2]
# 排序(原地修改)
nums.sort()
print(nums) # [1, 1, 2, 3, 4, 5, 9]
nums.sort(reverse=True)
print(nums) # [9, 5, 4, 3, 2, 1, 1]
# 反转(原地修改)
nums.reverse()
print(nums) # [1, 1, 2, 3, 4, 5, 9]
9.5 复制列表
original = [1, 2, 3]
# 浅拷贝
copy1 = original.copy()
copy2 = list(original)
copy3 = original[:]
# 修改拷贝不会影响原列表
copy1[0] = 99
print(original) # [1, 2, 3]
print(copy1) # [99, 2, 3]
10.Python 列表的作用与应用场景
列表(List)是 Python 中最基础、最常用的数据结构之一,它在编程中有着广泛的应用。以下是列表的主要作用和应用场景:
10.1 数据存储与组织
作用:列表可以有序地存储多个数据项,这些数据项可以是不同类型。
应用场景:
-
存储一组相关数据(如学生名单、商品列表等)
-
临时保存计算结果或中间数据
-
组织复杂数据结构的基础
# 存储不同类型的数据
mixed_list = [1, "apple", 3.14, True]
# 存储学生成绩
scores = [85, 92, 78, 90, 88]
10.2 数据操作与处理
作用:列表提供了丰富的方法来操作和处理数据。
应用场景:
-
数据排序、筛选和转换
-
批量处理数据元素
-
实现队列、栈等数据结构
# 数据处理示例
numbers = [5, 2, 8, 1, 9]
numbers.sort() # 排序
filtered = [x for x in numbers if x > 3] # 筛选
doubled = [x*2 for x in numbers] # 转换
10.3 迭代与遍历
作用:列表天然支持迭代,便于批量处理元素。
应用场景:
-
批量处理数据集
-
实现循环操作
-
数据分析和统计
# 计算总和
total = 0
for num in [1, 2, 3, 4, 5]:
total += num
# 统计频率
words = ["apple", "banana", "apple", "orange"]
word_count = {}
for word in words:
word_count[word] = word_count.get(word, 0) + 1
10.4 算法实现
作用:列表是许多算法的基础数据结构。
应用场景:
-
排序和搜索算法
-
动态规划
-
图算法中的邻接表表示
# 实现冒泡排序
def bubble_sort(lst):
n = len(lst)
for i in range(n):
for j in range(0, n-i-1):
if lst[j] > lst[j+1]:
lst[j], lst[j+1] = lst[j+1], lst[j]
return lst
10.5 多维数据表示
作用:嵌套列表可以表示多维数据结构。
应用场景:
-
矩阵运算
-
表格数据表示
-
游戏开发中的地图表示
# 表示3x3矩阵
matrix = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# 访问矩阵元素
print(matrix[1][2]) # 输出6 (第二行第三列)
10.6 函数参数传递
作用:列表可以作为函数的参数和返回值。
应用场景:
-
传递和返回多个值
-
实现可变参数函数
-
函数式编程中的高阶函数应用
# 函数处理列表
def process_numbers(numbers):
return [x**2 for x in numbers if x % 2 == 0]
result = process_numbers([1, 2, 3, 4, 5]) # 返回[4, 16]
10.7 与其他数据结构转换
作用:列表可以方便地与其他数据结构相互转换。
应用场景:
-
与字符串、元组、集合、字典等转换
-
数据格式转换
-
数据序列化
# 字符串与列表转换
s = "hello"
lst = list(s) # ['h', 'e', 'l', 'l', 'o']
new_s = "".join(lst) # "hello"
# 字典与列表转换
d = {"a": 1, "b": 2}
keys = list(d.keys()) # ['a', 'b']
10.8 实际应用案例
-
数据清洗:
# 去除空值 data = ["apple", "", "banana", None, "cherry"] cleaned = [x for x in data if x]
-
任务管理:
# 简单的待办事项列表 todo_list = ["写报告", "开会", "回复邮件"] todo_list.append("准备演示") todo_list.remove("开会")
-
数据分析:
# 计算平均值 def average(lst): return sum(lst) / len(lst) if lst else 0
-
游戏开发:
# 游戏地图 game_map = [ [0, 1, 0, 0], [0, 0, 1, 0], [1, 0, 0, 1], [0, 1, 0, 0] ]
列表是 Python 中非常强大且灵活的数据结构,掌握这些基本操作对于 Python 编程至关重要。列表推导式、生成器表达式等高级特性可以进一步简化列表操作,提高代码效率。