Python列表从入门到精通:底层原理与性能优化实战
很多朋友刚开始学 Python 时第一个被劝退的地方往往不是语法本身而是搞不懂列表List这种“什么都能装”的容器到底该怎么用。其实列表恰恰是整个 Python 里最实在、最好用的内置类型没有之一。无论你是用 Pycharm 配好了开发环境还是刚把 Python 官网下载的安装包装完准备入门列表都是你逃不掉的第一道关卡。这篇内容我会从列表的底层设计、核心操作、性能表现一直聊到实际的坑点排查用我自己带项目、写爬虫和做数据分析时积累下来的一些经验帮你把这一个知识点彻底吃透。准备上手实操的初学者、讲了一百遍基础但仍然觉得“会用但不理解”的进阶者都可以把这篇文章当作一份能反复查阅的参考。1. 列表在 Python 里的设计思路与选型逻辑1.1 为什么 Python 坚持用“引用数组”而不是 C 那种连续内存数组很多人第一次学 C 语言时接触过数组比如int arr[10]它要求里面所有元素都是一种类型而且内存是连续排列的。而 Python 的列表给人的第一印象是“啥都能装”整数、字符串、另一个列表甚至函数和对象混在一起毫无压力。这里面的关键是这个“混装”背后的存储策略Python 的列表实际存放的是各类对象的引用可以理解为“指针”而不是对象本身。用个生活化类比如果是 C 语言那种数组相当于停车场里几十个车位只能停同一种颜色的车而 Python 的列表相当于一个记录“车牌号”的台账每个格子记一个车牌至于车是轿车还是卡车、红色还是蓝色台账不关心。真正找到车是拿着车牌号去对应位置取。这个设计带来了极大的灵活性代价是“多绕了一层”存取速度必然比纯数值数组慢但换来的是写代码时几乎不需要考虑类型统一这在胶水语言和快速开发场景里太值了。这个“引用数组”的思路也解释了为什么列表中的元素是不同的可变对象时修改一个嵌套列表会产生连锁影响后面我会在坑点里专门展开。1.2 list 与 numpy 数组、array 模块的定位差别很多接触数据处理的同学会问为什么不用 numpy 算了列表这么慢这个问题本身值得拆一拆。numpy 数组之所以快核心在于它的数据在内存里是连续存放的同类型数值能够直接映射到 CPU 的 SIMD 指令上做批量运算而列表存的是引用每个元素可能是一个完整的 Python 对象解释器遍历时还要一层层拆包天然慢一个量级。但“快”是在特定场景下才成立的如果只是为了存几百上千个普通业务数据、做增删改查列表的灵活性和内置方法远胜 numpy只有当数据量大且涉及频繁的向量化计算、矩阵运算时numpy 才有优势。Python 自带的array模块则是个中间态——它要求同类型但只做一个紧凑数组没有 numpy 的数学能力日常几乎没人用。我在实际中有一个判断标准如果你的代码里写着“遍历列表 对每个元素做数学运算”并且列表有几万条以上那就值得改成 numpy如果只是几十条配置数据、临时结果集老老实实用列表不要为了“高性能”引入不必要的复杂度。1.3 list、Java 的 List 接口、Redis 的 list根本不是一个物种另一个常见的困惑来自搜索引擎搜“list接口”搜出来的全是 Java 教程搜“redis数据类型list”搜出来又是另一套东西。这里做一个明确的区分Python 的 List 是语言内置的动态数组容器按下标访问是 O(1)尾部追加平均也是 O(1)Java 的 List 是一个接口下面有ArrayList也是动态数组和LinkedList双向链表等实现Redis 的 list 在底层是快速链表或压缩列表它的设计目标是支持双端插入弹出而不是按下标随机访问。知道这些区别不是让你背面试题而是让你遇到性能问题时能精准定位如果你的 Python 代码突然慢了不要拿 Redis 那个 list 的经验来套也不要以为“列表很慢所以一定是列表的锅”。列表在大部分场景下都是合格的选择真正的性能瓶颈往往出现在“瞎用”而不是“用了”。2. 核心细节与实操要点2.1 创建和初始化列表的几种方式以及那个最常见的*陷阱创建列表最直接的方式是字面量a [1, 2, 3]。但实际工作中我们更常遇到“创建一个有规律的列表”的场景比如热词里提到的“怎么创建1到100的list”。标准答案是用range配合list()list(range(1, 101))。这里要提醒新手range本身不是一个列表它是一种惰性的“可迭代对象”只在被遍历时才生成数字好处是省内存如果你想看到它真实的元素必须包一层list()或者用列表推导式[i for i in range(1, 101)]。还有一个特别容易踩的坑就是用乘法复制列表x [[0] * 3] * 3看起来结果是[[0, 0, 0], [0, 0, 0], [0, 0, 0]]但当你修改x[0][0]时会发现三行全变了。原因还是“存引用”的本质外层* 3复制的是内层列表的引用而不是真实创建了三个独立列表。你在微信群里问别人十个新手有八个都碰到过这个。正确做法是用列表推导式x [[0] * 3 for _ in range(3)]。这类细节才是真正区分“背过语法”和“会用”的分水岭。2.2 索引、切片和步长用不好就掉坑索引是最基础的正数从 0 开始负数从 -1 开始a[-1]取最后一个元素。我见过不少人混淆“倒数第几个”和“负几”这里有个口诀最后一个元素永远是a[-1]倒数第二个是a[-2]以此类推。切片a[start:end:step]值得单独说清楚。a[1:4]取下标 1 到 3 的元素因为 end 是“左闭右开”的即包含 start 但不包含 end。这一条规则能让初学者记一辈子因为它也贯穿了range(1, 101)为什么能正确生成 1 到 100range的 end 同样不包含。步长 step 的坑在于负数步长会反转方向a[::-1]是经典的逆序操作a[-3::]是取最后三个元素。很多人不理解为什么a[-1::-1]能倒着走完整个列表本质就是 start 为最后一个下标end 缺省按方向走到底步长为 -1 所以方向是倒着往回遍历。实际改代码时我在检查切片边界时有一个习惯永远先写出获取目标元素的下标范围再改写成切片不要在脑子里直接算。2.3 增删改查的方法哪些是原地、哪些返回新列表这一块看着简单但混乱的人特别多。核心区分是“原地修改”和“返回新列表”。append、extend、insert、pop、remove、reverse、sort全都是原地修改返回值为 None而、sorted、切片、copy返回新列表。我看代码时发现很多人写a a.sort()然后在那里找 bug 找到崩溃——因为sort()已经把列表排好了返回 None这一赋值把原来的列表引用给覆盖了结果是 None。这就是“基础不牢debug 到老”的真实写照。增删时的选择也直接影响效率尾部追加用append平均 O(1)头部插入用insert(0, x)是 O(n)因为所有元素要整体后移合并多个元素用extend比循环append更快因为extend是在 C 层完成的批量操作。删除方面pop()弹出尾部是最快的pop(0)同样 O(n)remove(x)删除第一个匹配项需要遍历查找。如果你需要频繁地在头部增删建议改用collections.deque它是真正的双端队列。3. 实操用列表解决真实场景3.1 列表去重并保持顺序用 dict.fromkeys 的底层逻辑业务里最常见的需求是“把列表内的重复元素去掉而且要保留第一次出现的顺序”。网上的很多方案是set(a)但set不保证顺序而且会打乱原排列。如果你不在意顺序那set(a)最简单在意顺序时我建议data [3, 1, 3, 2, 1, 4] result list(dict.fromkeys(data)) print(result) # [3, 1, 2, 4]这个技巧的原理是dict.fromkeys(data)会以 data 的每个元素作为键创建一个字典键天然不重复而 Python 3.7 之后的字典保持插入顺序所以最终转回列表时既去重又保持了第一次出现的顺序。为什么不建议手写循环判断if x not in result因为in在列表上是 O(n) 的整体会变成 O(n²)数据量一大就卡。用 dict 的键查询是 O(1)整体 O(n)这就是“知其然也知其所以然”的典型例子。3.2 嵌套列表扁平化不靠递归也能展开热词里有一条”mongodb 怎么查list嵌套list”虽然不是 Python 的语境但这个“列表里套列表”的常见困惑在 Python 里同样存在。很多新手一看到嵌套列表就想到递归。其实多数情况下我们只是需要把一层嵌套展开比如[1, [2, 3], [4, [5]]]变成[1, 2, 3, 4, [5]]这时用简单的两层循环或者itertools.chain就够了from itertools import chain nested [1, [2, 3], [4, 5]] flat list(chain.from_iterable(nested)) print(flat) # [1, 2, 3, 4, 5]chain.from_iterable做的事就是“把可迭代对象逐个展开一层”。但要注意如果内层元素不是列表而是普通字符串或者数字chain只会把它们原样通过不会进一步拆碎。如果需要任意深度展开那才需要写递归或栈。我的经验是先想清楚业务到底需要展开几层很多场景根本不需要“全扁平化”两层就够用盲目上递归反而容易出错。3.3 列表推导式比 for 循环更 Pythonic列表推导式是列表操作里最彰显 Python 风格的部分很多新手看着它觉得“花里胡哨”但实际读代码时你一旦习惯了之后会觉得 for 循环又长又累赘。比如把列表里的偶数平方收集起来nums [1, 2, 3, 4, 5, 6] result [x * x for x in nums if x % 2 0] print(result) # [4, 16, 36]它的执行逻辑完全等价于先遍历再过滤再映射。和 for 循环 append 相比推导式在字节码层面更快一些可读性也更好。但我不建议无限嵌套推导式三层嵌套以上会变成代码阅读灾难。实际项目里我的标准是能写成一层或二层的推导式绝不用三层的超过两层就拆成普通的循环步骤并把每一步的中间结果用变量名讲清楚。3.4 自己动手模拟一个简化版 List想真正理解“动态数组 引用”的组合最快的方式是亲手模拟一个简单的列表模型。我一度带过的小组成员只要亲手写过一遍后续对列表的坑就有很强的免疫力。思路很简单底层用一个固定大小的数组存引用记录当前长度当长度到达容量时申请一个更大的数组比如翻倍把旧引用逐一复制过去再释放旧空间。class SimpleList: def __init__(self): self._capacity 4 self._items [None] * self._capacity self._length 0 def append(self, item): if self._length self._capacity: self._items self._items[:] [None] * self._capacity self._capacity * 2 self._items[self._length] item self._length 1 def get(self, index): if index self._length: raise IndexError(list index out of range) return self._items[index]这个模拟里最值得注意的点就是扩容时的“整体搬迁”成本。虽然单次 append 触发了 O(n) 的搬移但因为容量翻倍均摊下来每次 append 还是 O(1)。这正是 Python 列表 append 高效的根本原因。你把这个模型琢磨一遍就能明白为什么列表的头插特别慢、为什么不能超过容量提前申请内存、为什么浅拷贝只复制引用而不会复制嵌套对象——全部是同一套底层逻辑在约束上层行为。4. 列表的性能问题与避坑策略4.1 numpy 和 list 相比到底快在哪这个话题几乎在每次聊列表性能时都会被提起。我在 1.2 里提过定位差别这里再往底层补一句numpy 的快不是因为它用了魔法而是因为它把“解释器逐条执行 Python 语句”变成了“C 层直接对内存块做批量运算”。我这里用一个小例子展示差距import numpy as np arr np.arange(1_000_000) lst list(range(1_000_000)) # numpy: 向量化加法 s1 sum(arr 1) # list: 推导式计算 s2 sum([x 1 for x in lst])在我的机器上这组对比往往相差一个数量级。核心原因arr 1在 numpy 内部是一个 C 循环遍历的是连续内存上的数值而列表推导式里每做一次x 1都要把x从 Python 对象里拆出来、算完、再封成一个新对象再放进新列表这个过程的每步都有解释器开销。但这绝不意味着让你把普通场景都换成 numpy。它要求整个数据结构是同类型的数值要求你有真正的向量化计算需求。如果只是存字符串、混合类型、做业务逻辑强行 numpy 会适得其反连类型转换都可能报错。4.2 均摊复杂度与列表扩容机制上面 3.4 里已经简单模拟了扩容这里说点实操相关的因为容量是翻倍增长的所以频繁 append 并不会疯狂搬运元素。它在工程上的意义是你用列表当“队列”时尾部追加是安全的、高效的。但如果你的业务场景是“先进先出”左边出队pop(0)会造成每次 O(n) 的元素迁移几万条数据一跑起来就会卡成幻灯片。这时换deque才有意义from collections import deque d deque([1, 2, 3]) d.popleft() # O(1) d.append(4) # O(1)我的判别口诀是只用左右两端用 deque要按下标随机访问或大部分操作集中在尾部用 list如果还要按值查找、排序、做集合运算再考虑 set 或 sorted list。工具选型没有银弹只有匹配场景。4.3 遍历时修改列表几乎必踩的坑最常见的错误是“一边遍历一边删除”。举个例子我想删除列表里的所有偶数nums [1, 2, 3, 4, 5, 6] for x in nums: if x % 2 0: nums.remove(x)你会发现漏删了。原因是remove使得列表长度变小后续元素的下标整体前移但 for 循环内部的迭代器仍然按原来的下标递增导致跳过了某些元素。我遇到新手用这种方式调试最后一脸懵地把问题归到“Python 有个 bug”。这不是 bug是遍历机制与原地删除的冲突。正确的姿势有几种。最简单的是创建一个新列表nums [x for x in nums if x % 2 ! 0]这相当于“过滤后重新赋值”不碰原列表的遍历过程。如果一定要原地删可以倒着遍历for i in range(len(nums) - 1, -1, -1): if nums[i] % 2 0: del nums[i]倒着删不会影响前面未处理元素的下标这是我最常用的原地删除姿势因为很多场景下我需要保留同一个列表对象不让外部引用因重新赋值而失效。5. 常见问题与排查技巧实录5.1 列表使用高频问题速查表问题原因解法报错IndexError: list index out of range访问的下标超过了当前长度先检查len(a)确认索引范围取最后一个用a[-1]排序后列表变成 None调了a.sort()又把结果重新赋值给a原地排序就别赋值要新列表用sorted(a)[[0] * 3] * 3修改一块全都变外层乘法复制的是引用用[[0] * 3 for _ in range(3)]复制列表后改一个另一个也变用了b a而不是a.copy()浅拷贝用b a.copy()完全独立用copy.deepcopy(a)遍历时删除元素会漏删删除改变了下标迭代器索引错位用列表推导式生成新 list或倒序遍历删除append一个 list 后又想把它拆开添加了整个子列表用extend或判断一个列表元素是否存在很慢用了in在大列表上反复查频繁查重用 set数据量大时考虑哈希结构这个表是我在实际答疑中积累出的高频条目几乎覆盖了养成本文前面提到过的绝大多数错误模式。我建议你把它存下来遇到怪现象先查一查大概率能省一个小时。5.2 我踩过的三个少有人提的坑第一个坑和函数默认参数有关def f(lst[])这种写法是经典的反模式。因为默认参数在函数定义时只创建一次多次调用会共享同一个列表导致累计修改。现在我的默认写法永远是def f(lstNone): if lst is None: lst []。第二个坑是切片有个“共享引用”行为b a[:]其实是浅拷贝外层是新的但如果列表里有嵌套的可变对象内部元素还是同一个。比如 a 里有子列表修改 b 的子列表内容a 里也会变。这时要用copy.deepcopy不过 deepcopy 比较贵能不用时尽量不用尽量把嵌套结构设计成不可变的元组组合。第三个坑比较隐蔽是运算符的误用。a [1]与a a [1]不完全等价前者是原地扩展调的是extend后者是新建列表然后让变量指向新列表。如果在类里面写了__iadd__两者行为差距会更明显。我在重构一些老代码时经常因为把改成 ... ...而引入隐藏 bug。记住这几个坑比背诵一百个列表方法都有用。5.3 配合一点小场景用列表辅助写轻量的数据分组逻辑热词里出现了“量化交易策略代码”这样的需求有些人一上来就想上数据库或者高级框架。其实很多策略验证的中间步骤用列表就够了。比如手头有一组价格记录我想按日期切成 5 个一组做滚动分析最简单的方法就是列表切片prices [100, 102, 101, 103, 105, 107, 106, 108, 110] window 5 groups [prices[i: i window] for i in range(0, len(prices), window)]这只是一个例子但能看出来列表的基础操作一旦熟练处理数据结构的思路会非常清晰。类似的还有计算移动平均本质上是对切片窗口做求和和除法。基础打牢之后你看很多“高端框架”的源码会发现底层都离不开这些最朴素的容器操作。5.4 Redis 的 list 与 Python 列表的配合理解因为热词里有“redis数据类型list”这里最后补充一句Redis 的 list 更接近 C 语言的双向链表头尾操作极快但按下标访问就比较慢Python 的 list 是动态数组下标访问极快头尾操作里尾部快、头部慢。如果你在写项目时既用 Python 又用 Redis就要在不同层次上选择合适的数据结构Redis 适合做任务队列、生产者消费者模式里的消息列表Python 列表适合在内存里做索引查询、排序、切片分析。两者不在一个层级千万别混为一谈。6. 一点实际操作经验作为这个系列的开场收尾列表这个主题我在带人和自查代码时反复讲了无数遍。最深的体会是不要满足于“能跑”要弄清楚每个写法背后到底在内存里发生了什么。因为你后面还要学字典、集合、元组它们和列表有很多共性但也有完全不同的底层逻辑。如果在列表这一关就把“引用”和“拷贝”、“原地操作”和“返回新列表”搞明白后面所有容器的学习都会顺利很多。最后分享一个小技巧调试列表相关的代码时别只盯着打印结果在关键位置用id()看两个变量指向的是不是同一块内存。很多“灵异”问题比如复制之后改一个另一个跟着变、遍历时删了元素却漏掉、sort 之后变量变成 None本质上都是“引用”与“新对象”的区别没看清。id 一旦明确思路立刻会清晰。下一篇再聊字典Dict时你会发现自己已经有足够的底气去比较两种容器的异同了。

相关新闻

八段锦正确练法全拆解:从动作细节到呼吸意念的完整指南

八段锦正确练法全拆解:从动作细节到呼吸意念的完整指南

1. 练了三个月八段锦,我才发现多数人从一开始就练偏了先说说我自己的经历。最初接触八段锦,是跟着网上的视频练,每天早晨十分钟,一套动作打下来浑身发热,感觉挺不错。但坚持了大概三个月,发现腰背的酸痛改善…

2026/10/12 9:45:51 阅读更多 →
Kafka+Flink拼凑,还是FineDataLink 5.0一体化?实时数据处理的两种思路

Kafka+Flink拼凑,还是FineDataLink 5.0一体化?实时数据处理的两种思路

做实时数据处理,市面上一直有两条路。一条是开源拼凑路线,用 Kafka 做消息中间件、用 Flink 做流式计算,自己搭一套实时数据链路;另一条是一体化平台路线,用一个产品把实时同步、实时计算、数据质量、数据服务都收进来…

2026/10/12 12:59:29 阅读更多 →
禾赛科技-一面

禾赛科技-一面

1. 第二段实习的通信链路,为什么用UDP不用TCP?实际遇到过丢帧吗?我们项目选用 UDP,主要是业务传输 IMU、图像这类实时传感器数据,对时延和抖动要求高。TCP 的重传、拥塞控制会带来不确定延迟,而且旧帧重传回…

2026/10/12 12:59:34 阅读更多 →

最新新闻

大一新生年入百万?拆解流量造神背后的真实玩法与路径

大一新生年入百万?拆解流量造神背后的真实玩法与路径

大一新生,年入100万,别人都叫他“天才小火炬”。这种标题这两年刷到过不止一次,第一反应基本都是“又一个流量造神”。但把这些案例里的账号内容、产品路径、粉丝互动记录翻了很多遍之后,有一个结论我越来越确定:这里面…

2026/10/12 13:02:11 阅读更多 →
召合消除算法求解:从状态编码到A*搜索的工程实践

召合消除算法求解:从状态编码到A*搜索的工程实践

1. 从“消消乐”到算法题:召合消除问题的本质拆解第一次看到“召合消除”这个词,很多人会愣一下——这到底是个什么玩意儿?其实说白了,它就是一类在网格棋盘上通过交换相邻元素、凑齐三个或以上相同元素来触发消除的益智玩法的统称…

2026/10/12 13:02:11 阅读更多 →
Spring Boot接入MCP:让Java服务无缝对接AI应用的实战指南

Spring Boot接入MCP:让Java服务无缝对接AI应用的实战指南

1. 为什么每个Spring Boot开发者都该认真看看MCP 1.1 我遇到的服务接入难题 这两年我陆续接到好几个"把内部服务开放给AI使用"的需求,每次都被折腾得够呛。服务本身不难写,难的是对方AI应用的接入方式千奇百怪:有的要求按插件规范…

2026/10/12 13:02:11 阅读更多 →
C++从零实现分数类:精确四则运算与边界处理

C++从零实现分数类:精确四则运算与边界处理

1. 从整数除法的一个坑说起:为什么需要自己实现分数类很多刚接触C的朋友都写过类似这样的代码:计算1/2 1/3,然后发现结果输出是0。原因很简单,1/2在C里执行的是整数除法,结果是0而不是0.5。就算换成double&#xff0c…

2026/10/12 13:02:11 阅读更多 →
图片翻译六步流程:从OCR识别到译文回填的完整实战指南

图片翻译六步流程:从OCR识别到译文回填的完整实战指南

图片里夹着文字这件事,放在几年前还不太折腾人,大不了照着键盘一个字母一个字母敲。可现在谁手机里没有几十张截图、合同照片、PPT翻拍?尤其做外贸、读论文、追外漫、玩外服游戏的时候,满屏蝌蚪文真是让人头大。你去搜“图片翻译”…

2026/10/12 13:02:10 阅读更多 →
6.4k Stars!用Claude Code写论文的全套流水线,有人打包开源了:TaoToken统一Key接入实操

6.4k Stars!用Claude Code写论文的全套流水线,有人打包开源了:TaoToken统一Key接入实操

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 13:01:10 阅读更多 →

日新闻

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

复古胶片颗粒感噪点合成器:Canvas ImageData 像素高斯杂色注入算法

在数码相机、高清显示屏与现代矢量图形技术高度发达的今天,画面可以做到绝对的锐利、平滑与无瑕。然而,当一张秋日手账插画或拍立得照片过于“平整无瑕”时,往往会散发出一种冰冷生硬的“数码塑料感(Digital Plasticity&#xff0…

2026/10/12 0:00:59 阅读更多 →
活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

活字印刷古籍线装排版:Canvas 竖排文字与栏线自适应算法

在现代网页与移动端设计中,横排(Horizontal Layout)早已经成为了绝对的主流。然而,当我们翻开泛黄的线装古籍、宋版木刻诗集,或是欣赏一张茶道雅集的手写便签时,那种**自上而下纵向书写、自右向左逐列铺展&…

2026/10/12 0:00:59 阅读更多 →
周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

周日晚间的“精神松绑减震器”:无压力情绪倾倒箱与温和轻声陪伴

每到周日的晚上八点到十点,很多人心里都会悄悄亮起一盏警示灯。 在心理学上,这种现象有一个专门的称谓——“周日夜晚焦虑症(Sunday Scaries)”。明天又是周一,闹钟又要重新在七点响彻卧房;脑海里仿佛有一个…

2026/10/12 0:00:59 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/12 0:16:30 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/12 0:16:43 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 10:45:37 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:53 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/11 14:36:54 阅读更多 →