当前位置: 首页 > news >正文

【Python 高频 API 速学 ④】

一、为什么是这 4 个?

列表(list)是 Python 最常用的可变序列,
90 % 的操作可以浓缩成 「增、并、删、排」 四个字,
而这四个字正好对应 append / extend / pop / sort。


二、四剑客一览

方法作用原地?返回值典型复杂度
append(obj)末尾追加 1 个元素NoneO(1)
extend(iter)末尾批量并入NoneO(k)
pop(index=-1)按索引删除并返回被删元素O(n-i)
sort(key=, reverse=)就地排序NoneO(n log n)

三、一行代码场景秀

  1. 边读边攒:把文件所有非空行收集起来
lines = []
for line in open('data.txt'):if line.strip():lines.append(line)
  1. 两个列表合并成一份任务队列
todo = []
todo.extend(urgent)
todo.extend(normal)
  1. 实现“撤销最后一次”功能
history = ['write', 'save', 'commit']
last = history.pop()          # -> 'commit'
  1. 按成绩降序,同名按年龄升序
students.sort(key=lambda s: (-s.score, s.age))
  1. 一行代码实现简易 LRU(最近最少使用)缓存
cache, cap = [], 3
def use(x):if x in cache: cache.pop(cache.index(x))cache.append(x)if len(cache) > cap: cache.pop(0)

四、mini 实战:日志 Top-N 实时排序

需求:实时追加数据,始终保证列表内保留访问次数最高的 10 个 IP。

from collections import Counter
top10 = []
counter = Counter()for ip in stream():           # 假设 stream 持续产生 ipcounter[ip] += 1if ip in top10:           # 已存在 → 直接重排top10.sort(key=counter.get, reverse=True)elif len(top10) < 10 or counter[ip] > counter[top10[-1]]:top10.append(ip)top10.sort(key=counter.get, reverse=True)if len(top10) > 10:top10.pop()       # 踢掉第 11 名
print(top10)

核心动作拆解:
append 新增候选
sort 实时重排
pop 淘汰末尾


五、记忆口诀

“append 点射,extend 扫射,pop 拔刀,sort 排队。”

http://www.xdnf.cn/news/1272511.html

相关文章:

  • Spring学习笔记:Spring AOP入门以及基于Spring AOP配置的深入学习与使用
  • 嵌入式软件工程师笔试题(二)
  • 腾讯COS云存储入门
  • 原创邮件合并Python工具使用说明(附源码)
  • 安装NodeJS和TypeScript简要指南
  • 东方心绣脸启幕26周年盛典:以匠心锚定百年基业
  • 百度网盘自动启动如何关闭,关闭智能看图
  • AI推理的“灵魂五问”:直面2025算力鸿沟与中国的破局之路
  • 模拟人脑处理文本——从分句到分词,从段落到时间线叙事
  • 【Datawhale AI夏令营】让AI读懂财报PDF(多模态RAG)(Task 2)
  • 《汇编语言:基于X86处理器》第12章 复习题和练习
  • 《励曼旋耕》Liman Rotary Tillage
  • 202506 电子学会青少年等级考试机器人五级器人理论真题
  • JVM相关(AI回答)
  • 云渲染的未来已来:渲酷云如何重新定义数字内容生产效率
  • [CUDA] CUTLASS | C++ GEMM内核--高度模板化的类
  • 基于STM32H5的循环GPDMA链表使用
  • C语言指针完全指南:从入门到精通
  • C++虚函数表实现机制以及用C语言对其进行的模拟实现(加入了自己的思考和笔记)
  • 轻松Linux-5.进程控制
  • Linux文件系统基石:透彻理解inode及其核心作用
  • 复现论文关于3-RPRU并联机器人运动学建模与参数优化设计
  • 智慧农业-无人机视角庄稼倒伏农作物倒伏识别分割数据集labelme格式541张1类别
  • java基础(六)jvm
  • 12. “static关键字是什么意思”,Java中是否可以覆盖(override)一个private或者是static的方法
  • drippingblues靶机
  • 06-docker容器常用命令
  • 浏览器自动播放策略
  • AtCoder Beginner Contest 418
  • 嵌入式知识日常问题记录及用法总结(一)