当前位置: 首页 > 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.lryc.cn/news/615473.html

相关文章:

  • LintCode第547题-两数组的交集
  • 腾讯COS云存储入门
  • 浅尝AI辅助C转Verilog方法
  • 新手小白使用jQuery在实际开发中常用到的经验
  • 第二十天:余数相同问题
  • 《Resolving tissue complexity by multimodal spatial omics modeling with MISO》
  • 【面试场景题】微博热点新闻系统设计方案
  • day18 - CSS函数
  • nginx高性能web服务器
  • 基于Prometheus、Grafana、Loki与Tempo的统一监控平台故障排查与解决方案
  • java组件安全vulhub靶场
  • [激光原理与应用-206]:光学器件 - SESAM - 基本结构与工作原理
  • 通用AGI到来,记忆仍需要一点旧颜色
  • 【Python 高频 API 速学 ⑦ · 完结篇】
  • 【31】C#实战篇——获取路径下的文件名(不包含路径和扩展名),并分离出文件名`fileName` ,文件名编号`SN`,文件名前缀`WMT`
  • 智能情趣设备、爆 bug:可被远程操控。。。
  • GPT-5深度解析:革命性AI模型的全面报告与实战指南
  • Linux Makefile解析
  • 车流高峰漏检率↓85%!陌讯时序建模方案在智慧交通的实时优化​
  • Netbsd安装使用
  • Ubuntu下搭建LVGL模拟器
  • [SC]高效地调试SystemC模型中的语法错误
  • actuary notes[1]
  • urmom damn the jvm
  • C++2024 年一级
  • 基于 InfluxDB 的服务器性能监控系统实战(一)
  • P1053 [NOIP 2005 提高组] 篝火晚会
  • Linux学习--软件编程(shell命令)
  • 多线程(四) --- 线程安全问题
  • 使用 Ansys Discovery 进行动态设计和分析