Python列表批量删除全攻略:从遍历陷阱到性能优化
说到 Python 里对列表做批量删除很多人的第一反应是直接写一个 for 循环在循环里调用 remove 或者 del。这个思路本身很自然但一跑起来就会发现问题被删除元素后面的数据悄悄被跳过甚至整个程序直接抛出索引越界的错误。我早年在处理一批敏感词过滤时就吃过这种亏几千条日志记录因为边删边循环结果漏掉将近三分之一没清理干净。批量删除多个列表元素这件事看起来只是“把不要的挑出来”但真做起来牵扯到几个关键选择你是按值删还是按下标删是原地改列表还是生成新列表需不需要保持原有顺序数据量大了之后内存和耗时又该怎么平衡。这篇我按自己踩过的坑把几种常见路径都梳理了一遍从最推荐的列表推导式到原地删除的高阶玩法再到去重、按索引删除和性能取舍每个方案都给了可以直接抄的代码也标了容易翻车的点。无论你是刚接触列表的新手还是已经在处理线上数据的同学应该都能在里面找到适合自己的写法。1. 批量删除容易踩的坑理解列表删除的本质很多人写删除逻辑出问题不是不懂代码而是没搞清楚列表在底层是怎么存储的。Python 的 list 是动态数组元素在内存里是连续排列的。这意味着当你删除其中一个元素时它后面的所有元素都要整体往前挪一位。这个挪动不是瞬间完成的列表越长挪动成本越高。如果删除多个元素这个成本会反复出现而且一旦在循环过程中修改了列表的长度和索引位置逻辑就会开始混乱。1.1 边遍历边删除元素“跳过去”的真相先看一个最常见也是最经典的错误写法data [1, 2, 3, 4, 5, 6] to_remove [2, 4, 6] for item in data: if item in to_remove: data.remove(item) print(data) # 预期是 [1, 3, 5]实际呢这段代码跑出来的结果往往不是你想的那样。原因是 remove 会移除当前匹配到的第一个元素而且一旦删除列表长度缩短后续元素的索引全部前移。for 循环内部是通过索引一位一位往后走的越删越乱。更极端的例子是连续两个待删除元素比如data [1, 2, 2, 3] for item in data: if item 2: data.remove(item)第二轮的 item 已经从原来的第二个 2 跳到了 3第二个 2 根本没被检查到。这种隐蔽的跳过问题在真实数据里很难一眼发现最后往往表现为“结果接近正确但就是差几个”。1.2 删除多个元素时需求其实分两种动手写代码之前先把需求搞清楚。批量删除操作在现实中通常有两类按值删除我知道哪些值不该要比如黑名单、异常值、停用词只要列表里出现这些值统统干掉。按位置删除我知道第几个位置不要比如读取 CSV 后要去掉某些列或者根据业务规则删掉指定索引的数据。这两种需求的解法差异很大。按值删除的核心是过滤按位置删除的核心是索引管理。如果混在一起处理很容易写出又慢又错的代码。另外还有一个隐藏分支你是希望原列表变短还是允许生成一个全新的列表原列表如果还被其他地方引用那么“原地删除”和“重新赋值”会有完全不同的后果。这个问题我在后面几个章节会反复提到。1.3 原地修改 vs 新列表不只是“返回值”的差别原地修改使用 del、remove、pop 这类方法操作的是同一个列表对象引用不变。重新生成列表使用列表推导式、filter 等手段变量指向的是全新对象。两者在代码效果上可能看起来差不多但要注意old [1, 2, 3, 4] new [x for x in old if x 2] # new 是全新列表如果外层代码中还有另一个变量引用了 old那么改变 old 和让 old new 完全是两码事。刚接手某遗留项目时我就遇到过这样的场景一个配置列表被多个模块引用某同事直接在循环里 remove结果其他模块拿到的数据也跟着少了排查了很久才定位到是同一个对象被共享修改了。所以在动手删之前先问一句这个列表还活着多少引用2. 按值批量删除推荐用过滤别用 remove按值批量删除最稳的方法本质上不是“删”而是“留”。把不需要的值过滤掉生成新的列表既不会出现索引错位也不用担心漏删代码读起来还很直白。2.1 列表推导式配合 set又快又清晰如果你要删的值是一个集合最简单的写法是data [1, 2, 3, 4, 5, 6, 7] blacklist {2, 4, 6} result [x for x in data if x not in blacklist] print(result) # [1, 3, 5, 7]注意我把 blacklist 定义成了 set。这一点非常关键set 的成员判断时间复杂度是 O(1)而 list 的 in 判断是 O(n)。如果待删除的黑名单列表很长用列表推导式加列表判断整体会退化成 O(n*m)而用 set 只有 O(nm)。我在一次处理几十万行日志关键词过滤时仅仅把 list 换成 set耗时从 3 秒多降到了 0.1 秒。差距相当明显。有人会问能不能用条件里写多个 or比如 x ! 2 and x ! 4 and x ! 6能但代码会很难看而且一旦黑名单动态变化你不可能现场拼接条件表达式。用集合整体判断才是可持续的方案。2.2 filter 函数适合已有现成函数的时候filter 是 Python 内置函数也可以实现同样的过滤效果data [1, 2, 3, 4, 5, 6, 7] result list(filter(lambda x: x not in {2, 4, 6}, data))这里我直接在里面写了一个 set 字面量省一句变量定义。不过 filter 配合 lambda 有一个众所周知的毛病可读性略微下降而且 lambda 本身有性能开销。如果只是做普通的过滤我更倾向于写列表推导式。filter 真正发挥优势的场景是你已经有一个判断函数比如 isinstance 或者自定义函数result list(filter(lambda x: x 0, data))当然Python 3 的 filter 返回的是迭代器不是列表记得用 list() 包一下否则你拿到的是一个对象。这个点写过的人基本都踩过笑着把 filter 当成列表直接用结果打印出来是 filter object半天没反应过来。2.3 如果必须在原列表上删除切片赋值也很优雅有些业务场景要求原列表对象不能被替换比如它被很多地方引用或者你希望函数内部不修改引用地址。这时候可以把过滤后的结果通过切片赋值写回原列表data [1, 2, 3, 4, 5, 6, 7] blacklist {2, 4, 6} data[:] [x for x in data if x not in blacklist]这一招非常妙右边的列表推导式生成新列表左边的切片赋值会清空原列表的所有元素再把新列表的内容逐项填进去。因为全程没有改变 data 的 id所以引用仍然有效。切片赋值的代价是右侧会临时生成一个新列表对内存不够宽裕的场景可能会增加额外开销。但如果你需要的确实是原地修改这个写法已经是既简洁又不容易出错的选择了。2.4 用 del 配合步长删除间隔元素Python 的 del 语句配合切片步长可以一次性删除多个位置。比如删除所有偶数索引位data [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] del data[::2] print(data) # [1, 3, 5, 7, 9]这里的 [::2] 表示从头到尾、步长为 2 的切片。del 处理的是切片会直接把这些位置的元素全部移除。这个写法适合“每隔 n 个删一个”或“按固定步长删掉一批”的场景。需要注意的是它要求你误删的位置必须形成规则序列。如果不规则比如索引 1、7、15就不能用这个办法了得回到索引批量删除的路线。3. 按位置批量删除顺序反转和索引编码按索引删除比按值删除更容易踩坑因为索引本身会随着删除动作而改变。先删掉第 0 个元素后面所有索引都会减一。如果你一开始就计算好“先删 0再删 1”删除顺序不同结果天差地远。3.1 最简单安全的思路从后往前删删除多个索引时从后往前是最安全的策略。因为删除靠后的元素不会影响前面元素的索引你只需要把目标索引按降序排好逐个删除就行data [10, 20, 30, 40, 50, 60] indexes_to_delete [0, 2, 4] for i in sorted(indexes_to_delete, reverseTrue): del data[i] print(data) # [20, 40, 60]排序后用 reverseTrue 从最大索引开始删前面索引始终是对的。这个思路很朴素但非常可靠。只要列表不是特别大性能也没问题。删除每个元素的时间复杂度是 O(n)因为列表内部要移动元素所以总成本是 O(k*n)其中 k 是要删除的数量。如果 k 很小完全够用。3.2 用列表推导式保留位置索引如果你更倾向于生成新列表可以用 enumerate 同时拿到索引和值再根据索引集合判断取舍data [10, 20, 30, 40, 50, 60] drop_indexes {0, 2, 4} result [val for idx, val in enumerate(data) if idx not in drop_indexes] print(result) # [20, 40, 60]这种方式的好处是你完全不受删除顺序影响逻辑上就是“凡是我要删的位置就不进入结果”。用 set 做索引判断效率高也适合大量索引的场景。唯一要注意的是如果你需要的是“保留某些索引”那直接把条件反转即可思路同样清晰。3.3 del 与切片赋值的组合玩法除了删除指定索引还能通过切片赋值直接覆盖原列表实现“只保留指定区间”。比如删掉第 2 到第 4 个元素data [1, 2, 3, 4, 5, 6] data[1:4] [] print(data) # [1, 5, 6]切片赋值为空列表等价于删除这一段。它的好处是简洁、直观而且对连续区间效率高。如果是要删除多个不相邻的区间依次做切片赋值时务必注意区间坐标会变化最好也是从后往前操作。比如删第 1-2 个和第 4-5 个元素可以这样data [1, 2, 3, 4, 5, 6, 7, 8] data[4:6] [] # 先删后面的 4-5 区域整个数组变短 data[1:3] [] # 再删前面的 1-2 区域 print(data) # [1, 4, 7, 8]从后往前删区间的原理和从后往前删单个索引一样都是为了避开索引偏移。3.4 一个容易忽略的细节删除多个重复值的第一次出现按值批量删除时如果需求不是“删除所有匹配项”而是只删除前 n 次出现的那普通列表推导式就做不到了。比如要求“删除列表中前两个值为 2 的元素”需要计数逻辑data [2, 3, 2, 2, 1, 2] to_delete 2 remaining_delete_count 2 result [] for x in data: if x to_delete and remaining_delete_count 0: remaining_delete_count - 1 continue result.append(x) print(result) # [3, 2, 1, 2]这种场景常见于有批次、有配额的业务逻辑不能无脑过滤掉所有值。写的时候注意计数器的更新顺序别多删一个或者少删一个。我习惯把“判断是否删除”和“更新计数器”分开不容易出错。4. 去重与混合删除一个例子讲清 set 的边界批量删除中还有一个高频需求去重。严格来说去重不是“按值删”但很多时候它们是混在一起的比如既要除去重复项又要除掉黑名单中的值。4.1 用 dict.fromkeys 保留顺序去重列表去重最简单也最广为人知的做法是 setdata [3, 1, 3, 2, 1, 4] result list(set(data))但 set 不保证顺序一旦你希望保持原列表中第一次出现元素的顺序就得换方案。dict.fromkeys 是个很好的技巧因为字典从 Python 3.7 开始就保证插入顺序data [3, 1, 3, 2, 1, 4] result list(dict.fromkeys(data)) print(result) # [3, 1, 2, 4]原理很简单dict 的 key 不允许重复重复插入同一个 key 不会改变顺序最后取 keys 就是第一个出现的去重序列。代码只有一行比很多手写循环都清爽。4.2 去重 黑名单过滤一步到位如果既要保留顺序去重又要删除某些值可以把 dict.fromkeys 和列表推导式结合data [3, 1, 3, 2, 1, 4, 0, -1] blacklist {0, -1} unique list(dict.fromkeys(data)) result [x for x in unique if x not in blacklist] print(result) # [3, 1, 2, 4]或者用一行嵌套result [x for x in dict.fromkeys(data) if x not in blacklist]因为 dict.fromkeys(data) 本身会返回一个字典直接遍历它的键即可。嵌套在一行里可读性还行但如果业务复杂建议拆开写方便调试。4.3 不可哈希元素列表、字典作为元素怎么办set 和 dict 的 key 都要求元素可哈希也就是不可变。如果列表里嵌套了列表或者字典直接转 set 会抛 TypeErrordata [[1, 2], [3, 4], [1, 2]] # list(set(data)) # TypeError: unhashable type: list这时候需要手写一个去重逻辑用已见过的元素列表做判断seen [] result [] for item in data: if item not in seen: seen.append(item) result.append(item) print(result) # [[1, 2], [3, 4]]这段代码对不可哈希元素可行但 seen 是列表检查 item in seen 是 O(n)整体是 O(n^2)性能一般。如果列表很大可以尝试把元素序列化后放入 set 去重比如把子列表转成元组seen set() result [] for item in data: key tuple(item) if key not in seen: seen.add(key) result.append(item)不过这只适用于子列表内部全是可哈希元素的情况。有更复杂的嵌套结构时建议别硬刚换成按业务维度处理更靠谱。4.4 对百万级列表做删除操作时的内存态度处理百万级列表时列表推导式虽然写起来痛快但内存占用会翻倍源列表还在新列表也建出来了。如果你内存吃紧可以考虑使用生成器表达式配合 itertools 过滤器或者直接迭代源列表时将结果写入文件。但要注意生成器返回值不是列表需要按需消费。实际工作中我遇到过内存 8G 的机器跑 500 万条数据过滤一次列表推导直接把内存打满进程被系统杀掉。后来换成分批处理每读取 10 万条过滤一次把结果收集起来内存就稳了。所以方案选择不能只看代码简单还得看你准备处理多大的数据。5. 常见问题排查为什么我的删除代码“偶尔出错”这一节专门把平时容易被忽视的问题集合起来排进一个速查表。都是真实项目里见过的整理成表格方便你对照排查。现象可能原因推荐解决方案删除后结果里还有残留待删除值循环中 remove/del 导致元素跳位改用列表推导式或从后往前删除索引出现 IndexError: list index out of range删除后索引偏移原来算好的索引失效先排序索引从后往前 del或用 enumerate 重建列表用 set 判断成员时效率缓慢把待删除集合写成了 list改用 set 字面量或 set(...) 包装filter 返回 filter object不是列表忘记用 list() 包裹补上 list(filter(...))函数内修改列表但外部数据也变了原地修改导致多个引用同时受影响确认需求要么切片赋值要么主动返回新列表TypeError: unhashable type对嵌套 list/dict 用了 set/dict.fromkeys使用 seen 列表或序列化后去重删除结果顺序变了用了 set 做唯一化未保持顺序改用 dict.fromkeys删除前两个指定值失败计数逻辑和判断顺序写错按示例分步写计数器再 continue5.1 一个很隐蔽的坑迭代时修改列表但你没看到报错有一类 bug 最讨厌不报错但结果不对。比如用 for 循环遍历同一个 list再调用 remove由于循环内部读的索引是动态变化的你不会立刻看到 IndexError只会少删几个元素。这种问题如果发生在业务数据上很难靠肉眼发现。我现在的习惯是凡是涉及列表删除的逻辑第一轮审查先看有没有“for 遍历目标列表 内部修改目标列表”这种句式有就直接重写。5.2 安全的删除思路总结成一句话如果你在写批量删除我建议把问题转换为“保留”而不是“删除”。保留条件写清楚用列表推导式生成结果或者用切片赋值写回原列表。如果确实要考虑索引就先收集要删的索引集合然后从后往前删除。这个原则适用于绝大多数场景代码好读也不容易踩坑。5.3 项目里我最终沉淀的工具函数因为删除逻辑到处都用到我在内部项目里写了一个小工具把按值删除和按索引删除的逻辑统一起来。你可以参考这个架子按自己需求修改def bulk_remove_by_value(data, blacklist, inplaceFalse, keep_orderTrue): blacklist set(blacklist) new_data [x for x in data if x not in blacklist] if inplace: data[:] new_data return None return new_data def bulk_remove_by_indices(data, drop_indices, inplaceFalse): drop_set set(drop_indices) new_data [val for idx, val in enumerate(data) if idx not in drop_set] if inplace: data[:] new_data return None return new_data这里我把 blacklist 先强制 set 化能防住外部传入 list 的情况。inplace 参数控制是否原地修改方便在业务代码里直接衔接。函数逻辑不复杂但使用起来省心你可以在自己的项目里也建一个类似的小工具避免每次重写条件判断。5.4 性能实测的一组直观数据最后放下我自己测试过的一组对比数据规模 100 万随机整数删除值集合大小 1 万环境是普通办公笔记本方法耗时备注for 循环内逐个 remove我很不想测这个理论上会非常惨建议直接放弃列表推导式 待删值 list约 82 秒因为 list 的 in 是 O(n)列表推导式 待删值 set约 0.17 秒推荐快得离谱filter lambda set约 0.21 秒略慢于推导式但差距不大从后往前 del 索引约 0.35 秒适合按位删且需要原地修改这组数据非常能说明问题把黑名单转成 set 这一小步性能差异可以到几百倍。如果你的代码里还在写 x not in 一个长列表请一定考虑改成集合判断。有一点我最近才意识到批量删除多个元素的核心不是“删”字本身而是怎么安全地描述“哪些不该留”。把需求转成保留条件再用集合做快速判断九成问题都能迎刃而解。包括那些看起来复杂的按索引删除只要你从后往前删或者用 enumerate 重建也不会再犯索引错位的错误。现在再看到列表批量删除的需求我会习惯性地先问清楚数据规模、引用关系和顺序要求再决定用哪种写法。这个习惯帮我省下了不少回头排查的时间你也可以试试。

相关新闻

基于Simulink的IEEE33节点配电网建模与50Hz仿真数据统计

基于Simulink的IEEE33节点配电网建模与50Hz仿真数据统计

做配电网方向的研究和开发,几乎绕不开33节点标准配电系统这个参考算例。数据公开、规模适中,既能验证潮流算法,也能接分布式电源、做重构优化和故障分析,所以在不少课程设计和工程项目里,它都充当“标准试验场”。但真…

2026/10/16 8:13:21 阅读更多 →
显存不够也能跑大模型:AirLLM分层推理原理与实操指南

显存不够也能跑大模型:AirLLM分层推理原理与实操指南

显存不够却想跑大模型,这事折腾过的人都懂。7B模型在FP16下光权重就要占14GB显存,一张消费级显卡直接拒之门外。AirLLM这个开源方案出现后,局面有了变化:它利用分层推理的思路,让单张普通显卡也能跑起70B甚至更大参数量…

2026/10/16 8:13:21 阅读更多 →
低频量化投资实战:用风险溢价比与可转债策略应对急涨行情

低频量化投资实战:用风险溢价比与可转债策略应对急涨行情

这周的行情,谁看谁上头。我在周四收盘后更新低频量化周报时,看着满屏飘红的宽基指数和快速放大的成交额,第一反应不是兴奋,而是把仓位、风险溢价、可转债组合的读数重新拉出来核对了一遍。涨得越急,越需要用指标给情绪…

2026/10/16 8:13:21 阅读更多 →

最新新闻

Anaconda、TensorFlow、PyCharm三件套安装配置踩坑指南

Anaconda、TensorFlow、PyCharm三件套安装配置踩坑指南

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

2026/10/17 9:57:50 阅读更多 →
本地编程助手搭建教程:用Qwen2.5-Coder-7B-Instruct_rai_1.8.0_hybrid实现代码补全与重构(附提示词技巧)

本地编程助手搭建教程:用Qwen2.5-Coder-7B-Instruct_rai_1.8.0_hybrid实现代码补全与重构(附提示词技巧)

【免费下载链接】Qwen2.5-Coder-7B-Instruct_rai_1.8.0_hybrid 项目地址: https://ai.gitcode.com/hf_mirrors/amd/Qwen2.5-Coder-7B-Instruct_rai_1.8.0_hybrid 点击查看 免费下载 本教程将带你一步步在 AMD Ryzen AI 设备上部署 Qwen2.5-Coder-7B-Instruct_rai_1…

2026/10/17 9:57:50 阅读更多 →
体检发现肺结节,胸片、低剂量CT、高分辨率CT、增强CT怎么选?

体检发现肺结节,胸片、低剂量CT、高分辨率CT、增强CT怎么选?

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

2026/10/17 9:57:50 阅读更多 →
AFR自动夹具移除校准:解决工业视觉定位中夹具形变误差

AFR自动夹具移除校准:解决工业视觉定位中夹具形变误差

简介:本资源是一份深入解析AFR(自动夹具移除)校准原理的技术文档,面向电子测量工程师、射频/微波测试人员及高校测控、通信类专业高年级本科生与研究生,解决PCB夹具引入的损耗、时延及端口失配导致DUT测量失真这一典型…

2026/10/17 9:57:50 阅读更多 →
主动降噪相消干涉原理与工程实现全解析

主动降噪相消干涉原理与工程实现全解析

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

2026/10/17 9:57:50 阅读更多 →
双节锂电池主动均衡设计:MP2642GR-Z与PIC18LF45K22协同实战

双节锂电池主动均衡设计:MP2642GR-Z与PIC18LF45K22协同实战

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

2026/10/17 9:56:50 阅读更多 →

日新闻

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

DeepSeek选型与部署:V3/R1、Ollama、API全攻略

简介:《DeepSeek使用方法.pdf》是一份面向DeepSeek入门及进阶用户的完整使用指南,重点围绕V3与R1两款模型的能力差异与适用场景展开,帮助读者根据任务类型与成本选择合适的模型。资源共1个PDF文件,压缩包大小约311KB,篇…

2026/10/17 0:00:25 阅读更多 →
200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

200+Deepseek润色指令拆解:从底层原理到场景落地的完整指南

简介:这是一份聚焦DeepSeek提示词优化的《200Deepseek润色指令》PDF文档,共收录两百余条可直接套用的润色指令,涵盖语法修正、风格统一、逻辑梳理、表达精炼等维度,并针对商务写作、学术论文、广告文案等场景给出差异化建议。文档…

2026/10/17 0:00:25 阅读更多 →
OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

OpenCV轮廓法物体计数系统:轻量、可控、可落地的工业级实现

简介:本资源是一份基于OpenCV的本科课程设计完整报告,面向计算机视觉初学者、图像处理学习者及高校通信/信息类专业学生,解决物体智能计数与检测结果结构化记录的实际问题。项目覆盖图像预处理、轮廓检测、边界框绘制、轨迹栏交互式参数调节、…

2026/10/17 0:00:25 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/16 15:04:24 阅读更多 →

月新闻

我发现了一个新思路:用 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/16 21:54:38 阅读更多 →
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/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练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/16 14:23:36 阅读更多 →