20 分钟
Python 进阶

列表高级操作

就练列表的切片、排序、枚举这几个高级用法。

  • 熟练使用切片操作
  • 掌握 sort/sorted 高级排序
  • 使用 enumerate 和 zip

切片进阶

切片语法是 list[start:stop:step],三个参数都可以省略,也可以写负数。

示例代码(可运行)

排序

示例代码(可运行)
⚠️sort() 返回 None!

list.sort() 原地排序并返回 None。新手常写 new = old.sort(),结果 new 是 None。要用 new = sorted(old)。

enumerate 和 zip

示例代码(可运行)
预测输出
nums = [1,2,3,4,5]
print(nums[::-2])
找 Bugsort() 返回 None,不是排序后的列表。
nums = [3,1,2] result = nums.sort() print(result)
填空题填写空白处的代码
nums = [10,20,30,40,50] print(nums[]) # [40, 50]
选择题

enumerate(['a','b']) 第一次迭代产生?

资深工程师加餐

底层原理 · 大厂视角 · 工程经验,点卡片展开

list 底层是一段连续的指针数组,容量不够时整体扩容(CPython 约按 1.125 倍)。因此按下标取元素是 O(1),末尾 append 均摊 O(1),但在头部 insert(0,…) 或 pop(0) 要搬动全部元素、是 O(n)。dict/set 基于哈希表,平均查找 O(1) 但更耗内存。选对数据结构,往往比抠语法更影响性能。

挑战任务

列表操作挑战

简单+50 XP

就这么简单。给个列表,用切片和排序就能搞定:输出反转后的前3个最大值。

列表操作挑战
2 个测试用例

课后作业

矩阵转置

中等+20 XP

用zip将3x3矩阵转置。

矩阵转置
1 个测试用例