Python列表操作完全指南
1 列表基础
• 列表是Python中最常用的可变序列类型,用方括号`[]`表示
• 列表可以存储任意类型的数据(数字、字符串、对象等)
• 列表是有序的,元素按添加顺序排列,支持索引和切片操作
# 创建列表
empty_list = []
fruits = ['apple', 'banana', 'cherry']
mixed = [1, 'a', True, 3.14]
2 访问列表元素
• 使用索引访问单个元素(索引从0开始)
• 使用负索引从末尾访问(-1表示最后一个元素)
• 切片操作访问子列表
fruits = ['apple', 'banana', 'cherry', 'date', 'elderberry']
# 正向索引
first = fruits[0] # 'apple'
second = fruits[1] # 'banana'
# 负向索引
last = fruits[-1] # 'elderberry'
second_last = fruits[-2] # 'date'
# 切片操作
subset = fruits[1:3] # ['banana', 'cherry']
start_to_end = fruits[2:] # ['cherry', 'date', 'elderberry']
copy = fruits[:] # 创建完整副本
3 修改列表元素
• 通过索引直接修改单个元素
• 通过切片修改多个元素
numbers = [10, 20, 30, 40, 50]
# 修改单个元素
numbers[0] = 100 # [100, 20, 30, 40, 50]
# 修改多个元素
numbers[1:3] = [200, 300] # [100, 200, 300, 40, 50]
# 使用不同长度的序列替换
numbers[1:4] = [2000] # [100, 2000, 50]
4 添加元素
• 使用`append()`在末尾添加单个元素
• 使用`extend()`或`+`操作符合并列表
• 使用`insert()`在指定位置插入元素
numbers = [10, 20, 30]
# 末尾添加单个元素
numbers.append(40) # [10, 20, 30, 40]
# 合并列表
numbers.extend([50, 60]) # [10, 20, 30, 40, 50, 60]
numbers += [70, 80] # [10, 20, 30, 40, 50, 60, 70, 80]
# 在指定位置插入
numbers.insert(0, 5) # [5, 10, 20, 30, 40, 50, 60, 70, 80]
numbers.insert(3, 25) # 在索引3位置插入25
5 删除元素
• 使用`del`语句通过索引删除
• 使用`remove()`通过值删除第一个匹配项
• 使用`pop()`删除并返回指定位置的元素(默认最后)
• 使用`clear()`清空整个列表
numbers = [10, 20, 30, 40, 50, 60, 70, 80]
# 通过索引删除
del numbers[0] # 删除第一个元素
del numbers[1:3] # 删除索引1到2的元素
# 通过值删除
numbers.remove(50) # 删除第一个值为50的元素
# pop删除并返回
last = numbers.pop() # 删除并返回最后一个元素
third = numbers.pop(2) # 删除并返回索引2的元素
# 清空列表
numbers.clear()
6 列表排序
• 使用`sort()`方法原地排序
• 使用`sorted()`函数返回新列表
• 支持反向排序和自定义排序规则
numbers = [3, 1, 4, 1, 5, 9, 2, 6]
# 原地升序排序
numbers.sort() # [1, 1, 2, 3, 4, 5, 6, 9]
# 原地降序排序
numbers.sort(reverse=True) # [9, 6, 5, 4, 3, 2, 1, 1]
# 使用sorted函数返回新列表
new_numbers = sorted(numbers) # 原列表不变
# 自定义排序规则
words = ['apple', 'Banana', 'cherry', 'Date']
words.sort(key=str.lower) # 不区分大小写排序
# 按长度排序
words.sort(key=len) # ['Date', 'apple', 'Banana', 'cherry']
7 列表推导式
• 简洁高效地创建列表
• 支持条件过滤
• 支持多重循环
# 基本推导式
squares = [x**2 for x in range(10)] # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
# 带条件过滤
even_squares = [x**2 for x in range(10) if x % 2 == 0] # [0, 4, 16, 36, 64]
# 多重循环
pairs = [(x, y) for x in [1,2,3] for y in [3,1,4] if x != y]
# 结果:[(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
8 常用内置函数
• `len()`:获取列表长度
• `max()`和`min()`:获取最大/最小值
• `sum()`:计算列表元素总和
• `all()`和`any()`:检查所有/任意元素是否为True
numbers = [10, 20, 30, 40, 50]
print(len(numbers)) # 5
print(max(numbers)) # 50
print(min(numbers)) # 10
print(sum(numbers)) # 150
# 逻辑检查
bool_list = [True, False, True]
print(all(bool_list)) # False
print(any(bool_list)) # True
9 列表作为栈和队列
• 栈操作:后进先出(LIFO)
• 入栈:`append()`
• 出栈:`pop()`
• 队列操作:先进先出(FIFO)
• 入队:`append()`
• 出队:`pop(0)`(效率较低,建议使用`collections.deque`)
# 栈操作示例
stack = []
stack.append('a') # 入栈
stack.append('b') # 入栈
top = stack.pop() # 出栈 'b'
print(stack) # ['a']
# 队列操作示例(低效方式)
queue = []
queue.append('a') # 入队
queue.append('b') # 入队
first = queue.pop(0) # 出队 'a'
print(queue) # ['b']
10 列表高级操作
• 使用`enumerate()`同时获取索引和值
• 使用`zip()`合并多个列表
• 使用`filter()`和`map()`进行函数式操作
# 使用enumerate
fruits = ['apple', 'banana', 'cherry']
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
# 使用zip合并列表
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
combined = list(zip(list1, list2)) # [(1, 'a'), (2, 'b'), (3, 'c')]
# 使用filter和map
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# 过滤偶数
evens = list(filter(lambda x: x % 2 == 0, numbers))
# 计算平方
squares = list(map(lambda x: x**2, numbers))
11 总结
Python列表是灵活且强大的数据结构,提供了丰富的操作方法。本指南涵盖了从基础创建、访问、修改到高级的排序、推导式和函数式编程技巧。掌握这些操作将使你能够高效地处理各种数据任务。记住在实际开发中:
• 对于频繁的两端操作,考虑使用`collections.deque`替代列表
• 大型列表操作时,注意性能影响(如频繁的`insert(0, item)`或`pop(0)`)
• 利用列表推导式和内置函数可以使代码更简洁高效
• 列表的可变性使其成为动态数据集的理想选择,但也需注意意外修改的问题







