☰ 目录

Python 列表

列表(List)是 Python 中最灵活的数据结构,用于存储有序、可变的元素集合。列表可以包含不同类型的数据,支持动态增删改查操作。


一、列表基础操作

操作语法示例结果
创建[]list()fruits = ["apple", "banana", "cherry"]三元素列表
访问list[index]fruits[1]"banana"
负索引list[-n]fruits[-1]"cherry"
切片list[start:end:step]fruits[0:2]["apple", "banana"]
长度len(list)len(fruits)3
存在检查in 操作符"apple" in fruitsTrue

二、列表修改方法

方法描述示例修改后列表
append(x)尾部添加元素fruits.append("orange")[..., "orange"]
insert(i, x)指定位置插入fruits.insert(1, "mango")["apple", "mango", ...]
extend(iter)合并另一列表fruits.extend(["grape", "kiwi"])[..., "grape", "kiwi"]
remove(x)删除首个匹配项fruits.remove("banana")移除 "banana"
pop([i])删除并返回元素fruits.pop(0)移除首位,返回 "apple"
clear()清空列表fruits.clear()[]

注意:直接修改原列表(原地操作),返回 None


三、列表信息获取

方法描述示例返回值
index(x)元素首次出现位置[10,20,30].index(20)1
count(x)元素出现次数[1,2,1,3].count(1)2
max()最大值max([5,2,8])8
min()最小值min([5,2,8])2
sum()数值列表求和sum([1,2,3])6

四、列表排序与反转

方法描述示例结果
sort()原地排序nums = [3,1,4]; nums.sort()[1,3,4]
sorted()返回新排序列表sorted([3,1,4])[1,3,4]
reverse()原地反转nums.reverse()[4,3,1]
reversed()返回反转迭代器list(reversed(nums))[4,3,1]

高级排序

# 按字符串长度排序
words = ["apple", "kiwi", "banana"]
words.sort(key=len)  # ['kiwi', 'apple', 'banana']

# 多级排序
students = [("Alice", 20), ("Bob", 18), ("Charlie", 20)]
students.sort(key=lambda x: (x[1], x[0])) 
# [('Bob', 18), ('Alice', 20), ('Charlie', 20)]

五、列表复制机制

方法描述内存影响
直接赋值b = a共享内存(修改同步)
浅拷贝b = a.copy()b = a[:]只复制一层(嵌套对象共享)
深拷贝import copy; b = copy.deepcopy(a)完全独立副本
# 浅拷贝示例
a = [1, [2, 3]]
b = a.copy()
b[1][0] = 99
print(a)  # [1, [99, 3]] (嵌套列表被修改)

# 深拷贝解决
from copy import deepcopy
c = deepcopy(a)
c[1][0] = 100
print(a)  # [1, [99, 3]] (原列表不变)

六、列表推导式

简洁创建新列表(比循环高效)

# 基本形式
squares = [x**2 for x in range(5)]  # [0,1,4,9,16]

# 带条件过滤
evens = [x for x in range(10) if x % 2 == 0]  # [0,2,4,6,8]

# 嵌套循环
matrix = [[1,2], [3,4], [5,6]]
flat = [num for row in matrix for num in row]  # [1,2,3,4,5,6]

# 条件表达式
labels = ["Pass" if score >=60 else "Fail" for score in [75,45,90]]
# ['Pass','Fail','Pass']

七、多维列表(嵌套列表)

# 创建二维列表(矩阵)
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

# 访问元素
print(matrix[1][2])  # 6 (第二行第三列)

# 遍历多维列表
for row in matrix:
    for num in row:
        print(num, end=' ')
    print()
# 输出:
# 1 2 3
# 4 5 6
# 7 8 9

八、列表与迭代器

# 生成器表达式(节省内存)
big_data = (x**2 for x in range(1000000))  # 不立即创建元素

# 枚举遍历
fruits = ["apple", "banana", "cherry"]
for index, fruit in enumerate(fruits):
    print(f"Index {index}: {fruit}")

# 同时遍历多个列表
names = ["Alice", "Bob"]
scores = [85, 92]
for name, score in zip(names, scores):
    print(f"{name}: {score}")

九、性能优化技巧

  1. 预分配空间(大数据处理)

arr = [None] * 1000  # 创建1000个空位的列表

    2.避免中间变量(链式操作)

# 差
temp = data.strip().split(',')
result = [x for x in temp if x]

# 佳
result = [x for x in data.strip().split(',') if x]

  3.选择合适数据结构

  • 频繁插入/删除 → collections.deque

  • 唯一元素检查 → set

  • 键值对存储 → dict

   4.切片替代循环(高效批量修改)

nums = [1,2,3,4,5]
nums[1:4] = [20, 30, 40]  # 直接替换子列表

十、常见错误

  1. 索引越界

lst = [1,2,3]
print(lst[3])  # IndexError

    2.空列表操作

empty = []
empty.pop()    # IndexError

  3.修改迭代中的列表

numbers = [1,2,3,4]
for num in numbers:
    if num % 2 == 0:
        numbers.remove(num)  # 导致意外跳过元素

   4.误用可变默认参数

def add_item(item, lst=[]):  # 默认列表会持久化
    lst.append(item)
    return lst

print(add_item(1))  # [1]
print(add_item(2))  # [1,2] (非预期结果)

意见反馈

AI助手

代码编辑器