# 常用数据结构之列表(二) ## 列表的方法 ### 添加和删除元素 ```python languages = ['Python', 'Java', 'C++'] # 添加 languages.append('JavaScript') # 追加到末尾 languages.insert(1, 'SQL') # 插入到指定位置 # 删除 languages.remove('Java') # 移除第一个匹配项 languages.pop() # 弹出最后一个元素 languages.pop(0) # 弹出指定位置元素 languages.clear() # 清空列表 del languages[1] # del 关键字删除 ``` > **注意**:`remove()` 找不到元素会引发 `ValueError`,建议先做成员判断。 ### 查找元素 ```python items = ['Python', 'Java', 'Java', 'C++', 'Python'] print(items.index('Python')) # 0(第一个匹配的索引) print(items.index('Python', 1)) # 4(从索引1开始查找) print(items.count('Python')) # 2(出现次数) ``` ### 排序和反转 ```python items = ['Python', 'Java', 'C++', 'Kotlin'] items.sort() # 升序排序 items.reverse() # 反转列表 ``` ## 列表生成式 列表生成式是 Python 的特色语法,用一行代码创建列表,性能优于 `for` 循环 + `append`。 ```python # 基础形式 [表达式 for 变量 in 可迭代对象] # 示例:1-99中能被3或5整除的数 [i for i in range(1, 100) if i % 3 == 0 or i % 5 == 0] # 平方列表 nums = [35, 12, 97, 64, 55] squares = [num ** 2 for num in nums] # 筛选大于50的元素 big_nums = [num for num in nums if num > 50] ``` > **建议**:创建列表优先使用生成式语法,代码简洁且效率更高。 ## 嵌套列表 列表元素也可以是列表,用于表示矩阵或表格: ```python scores = [[95, 83, 92], [80, 75, 82], [92, 97, 90]] print(scores[0]) # [95, 83, 92] print(scores[0][1]) # 83(第一个学生的第二门成绩) ``` **生成嵌套列表:** ```python import random scores = [[random.randrange(60, 101) for _ in range(3)] for _ in range(5)] ``` ## 应用:双色球随机选号 ```python import random red_balls = list(range(1, 34)) # 1-33红色球 blue_balls = list(range(1, 17)) # 1-16蓝色球 # 无放回随机抽样6个红球 selected_balls = random.sample(red_balls, 6) selected_balls.sort() for ball in selected_balls: print(f'\033[031m{ball:02d}\033[0m', end=' ') blue = random.choice(blue_balls) print(f'\033[034m{blue:02d}\033[0m') ``` > **说明**:`random.sample(seq, n)` — 无放回抽取 n 个不重复元素 > `random.choice(seq)` — 随机抽取 1 个元素 ## 总结 - 列表是可变容器,支持增删改查操作 - `append()` 追加、`insert()` 插入、`remove()` 删除、`pop()` 弹出 - **优先使用列表生成式**创建列表,性能更好 - 嵌套列表用于表示二维结构(矩阵、表格等)