Python列表查找全攻略:从in、index到性能优化与实战避坑
1. 从“找东西”说起为什么列表查找是Python的必修课我刚开始写Python那会儿最常遇到的场景就是在一堆数据里找某个特定的值。比如从一堆用户ID里找某个人的记录或者在一长串日志条目里定位一个错误信息。那时候我只会用最笨的for循环一个个去比对效率低不说代码还写得又臭又长。后来才发现Python的列表List内置了非常强大的查找方法像index()、count()还有配合in操作符的用法用好了能省下大把时间代码也清晰得多。今天我们就来彻底聊聊Python里查找列表元素的那些事儿。这不仅仅是记住几个函数那么简单更重要的是理解它们背后的逻辑、各自的适用场景以及那些官方文档里不会写的“坑”。无论你是刚入门的新手还是已经写过一些代码但想更精进的开发者掌握这些查找技巧都能让你处理数据时更加得心应手。我们会从最基础的“在不在”开始讲到精确的“在哪儿”再到统计“有几个”最后还会聊聊如何应对更复杂的查找需求比如模糊匹配或者自定义对象的查找。准备好了吗我们这就开始。2. 基础确认元素到底在不在列表里在深入讨论如何获取精确位置之前我们首先要解决一个更基本的问题我想找的那个东西到底在不在这个列表里这是一个前置的、成本极低的检查可以避免后续很多不必要的错误。2.1 使用in和not in成员操作符这是Python中最直观、最高效的成员检查方式。它的作用就是返回一个布尔值True或False告诉你目标元素是否存在于列表中。fruits [‘apple‘, ‘banana‘, ‘orange‘, ‘grape‘] # 检查元素是否存在 print(‘apple‘ in fruits) # 输出: True print(‘mango‘ in fruits) # 输出: False # 同样可以用 not in 检查是否不存在 print(‘mango‘ not in fruits) # 输出: True背后的逻辑与性能in操作符在底层对列表进行的是线性查找Linear Search。也就是说它会从列表的第一个元素开始依次与目标值进行比较直到找到匹配项或遍历完整个列表。对于短列表这非常快。但对于非常长的列表比如几十万、上百万个元素线性查找的效率是O(n)可能会成为性能瓶颈。这时如果你需要频繁进行“是否存在”的检查就应该考虑使用集合set或字典dict它们的in操作平均时间复杂度是O(1)。一个真实的踩坑经历我曾经写过一个脚本处理用户提交的标签用in来判断标签是否在预定义的“有效标签列表”里。一开始列表只有几十个运行飞快。后来有效标签增长到上万个每次提交都要遍历这个巨大的列表接口响应速度骤降。解决方案很简单在程序初始化时就把这个列表转换成集合valid_tags_set set(valid_tags_list)后续的检查if tag in valid_tags_set:速度就完全不受列表长度影响了。所以记住这个经验如果某个列表仅用于做“是否存在”的频繁检查且内容不重复、不要求顺序优先考虑使用set。2.2 避免在条件判断中直接调用index()很多新手会写出这样的代码if my_list.index(‘target‘) 0: print(“Found it!“)这段代码意图是找到就执行。但这里有个大问题如果元素不存在index()方法会抛出ValueError异常导致程序崩溃。index()的职责是返回位置而不是判断存在性。用in做检查再用index()获取位置才是正确的做法。my_list [1, 2, 3] target 4 # 错误做法会崩溃 # position my_list.index(target) # 正确做法先检查再获取 if target in my_list: position my_list.index(target) print(f“元素在索引 {position} 处。“) else: print(“元素不在列表中。“)3. 精确定位使用index()方法找到元素位置当我们确认元素存在后下一步自然就是想知道它具体在哪个位置。这个位置在编程中称为“索引”Index。Python列表的索引从0开始即第一个元素的索引是0第二个是1以此类推。3.1index()方法的基本用法list.index(x)是最基本的格式它会在列表中查找第一个值等于x的元素并返回其索引。numbers [10, 20, 30, 20, 40] # 查找元素20 idx numbers.index(20) print(idx) # 输出: 1注意虽然列表中有两个20索引1和3但index()只返回第一个匹配到的位置。为什么是返回第一个这是由列表的特性和常见需求决定的。列表是一个有序集合允许重复。在很多场景下我们遇到重复值时往往关心的是它首次出现的位置例如在日志流中定位某个错误的第一次发生。如果index()返回所有位置那么它的返回值将不是一个整数而是一个列表这会改变其方法签名和通用性。获取所有位置有其他的方法我们后面会讲。3.2 处理元素不存在的情况异常捕获如前所述查找不存在的元素会引发ValueError。在健壮的代码中我们必须处理这种异常。fruits [‘apple‘, ‘banana‘, ‘orange‘] try: idx fruits.index(‘mango‘) print(f“芒果的索引是{idx}“) except ValueError: print(“列表中找不到芒果。“)这是一种经典的“请求原谅比许可更容易”Easier to Ask for Forgiveness than Permission, EAFP的Python编程风格。相比于先用in检查请求许可直接尝试操作并在出错时处理异常在某些情况下更简洁、更高效尤其是在index()成功是常态、失败是例外的情况下。3.3 限定搜索范围start和end参数index()方法还支持两个可选参数start和end。格式为list.index(x, start, end)。它会在列表的切片list[start:end]中查找元素x但返回的索引是相对于整个原列表的。letters [‘a‘, ‘b‘, ‘c‘, ‘a‘, ‘b‘, ‘d‘] # 在整个列表中找 ‘b‘返回第一个 print(letters.index(‘b‘)) # 输出: 1 # 从索引2开始往后找 ‘b‘ print(letters.index(‘b‘, 2)) # 输出: 4 # 在索引2到5不包含5的范围内找 ‘a‘ print(letters.index(‘a‘, 2, 5)) # 输出: 3 # 在索引4到5的范围内找 ‘a‘会引发 ValueError因为该范围内没有 ‘a‘ # print(letters.index(‘a‘, 4, 5))这个功能非常实用。假设你有一个按时间戳排序的日志列表你想找到某个特定错误信息在最近100条记录中第一次出现的位置就可以用logs.index(‘ERROR: Something broke‘, -100)来从列表末尾开始向前搜索一段范围避免无谓地遍历整个巨大的列表。4. 全面统计使用count()方法计算元素出现次数有时候我们不仅想知道元素在哪还想知道它到底出现了多少次。比如统计用户列表中“VIP”用户的数量或者计算一段文本中某个关键词的频率。这时就需要list.count(x)方法。4.1count()的基本使用count()方法遍历整个列表统计值等于参数x的元素个数并返回这个整数。survey_data [‘yes‘, ‘no‘, ‘yes‘, ‘yes‘, ‘no‘, ‘maybe‘, ‘yes‘] yes_count survey_data.count(‘yes‘) no_count survey_data.count(‘no‘) maybe_count survey_data.count(‘maybe‘) none_count survey_data.count(None) # 统计None值 print(f“Yes: {yes_count}“) # 输出: Yes: 4 print(f“No: {no_count}“) # 输出: No: 2 print(f“Maybe: {maybe_count}“) # 输出: Maybe: 1 print(f“None: {none_count}“) # 输出: None: 04.2count()的性能考量与替代方案和in、index()一样count()也是线性查找时间复杂度为O(n)。对于巨大的列表频繁调用count()也可能成为性能问题。一个进阶技巧使用collections.Counter如果你需要对一个列表中的所有元素进行频率统计而不是只查一个那么使用collections模块中的Counter类是更高效的选择。Counter会一次性遍历列表生成一个类似字典的对象键是元素值是出现次数。后续的查询都是O(1)的时间复杂度。from collections import Counter survey_data [‘yes‘, ‘no‘, ‘yes‘, ‘yes‘, ‘no‘, ‘maybe‘, ‘yes‘] frequency Counter(survey_data) print(frequency) # 输出: Counter({‘yes‘: 4, ‘no‘: 2, ‘maybe‘: 1}) print(frequency[‘yes‘]) # 输出: 4 (O(1)操作) print(frequency[‘never‘]) # 输出: 0 (不会报错) # 获取最常见的3项 print(frequency.most_common(3)) # 输出: [(‘yes‘, 4), (‘no‘, 2), (‘maybe‘, 1)]所以经验法则如果只统计一个元素的次数用count()。如果需要统计列表中多个甚至所有元素的频率用Counter一次性计算并存储结果。5. 进阶查找如何获取一个元素的所有位置索引这是面试和实际项目中经常遇到的问题。index()只给第一个但我们需要所有。思路很直接遍历列表记录所有匹配的索引。5.1 使用列表推导式List Comprehension这是最Pythonic、最简洁的方式。numbers [10, 20, 30, 20, 40, 20] target 20 # 列表推导式遍历索引和值如果值等于目标则收集索引 all_indices [index for index, value in enumerate(numbers) if value target] print(all_indices) # 输出: [1, 3, 5]这里用到了enumerate()函数它能在循环中同时获取索引index和值value。列表推导式一行代码就完成了循环、判断和收集的过程非常高效。5.2 使用传统的for循环如果你觉得列表推导式可读性稍差或者需要在查找过程中进行更复杂的操作传统的for循环也很清晰。numbers [10, 20, 30, 20, 40, 20] target 20 all_indices [] for index, value in enumerate(numbers): if value target: all_indices.append(index) print(all_indices) # 输出: [1, 3, 5]5.3 封装成可复用的函数在实际项目中我们经常需要这个功能将其封装成一个函数是很好的实践。def find_all_indices(lst, target): “““返回列表中所有等于target的元素的索引列表。 如果没找到返回空列表。 “““ return [i for i, v in enumerate(lst) if v target] # 使用函数 result find_all_indices([‘a‘, ‘b‘, ‘a‘, ‘c‘, ‘a‘], ‘a‘) print(result) # 输出: [0, 2, 4] result_empty find_all_indices([1, 2, 3], 4) print(result_empty) # 输出: []这个函数安全地返回一个列表无论找到与否调用者都无需处理异常接口更友好。6. 复杂对象与自定义条件的查找前面的例子查找的都是整数、字符串等简单数据类型。但列表里经常存放的是字典、自定义类的实例等复杂对象。我们如何根据对象内部的某个属性来查找呢6.1 查找字典列表中的特定项假设我们有一个学生信息列表每个学生是一个字典。students [ {‘id‘: 1, ‘name‘: ‘Alice‘, ‘score‘: 85}, {‘id‘: 2, ‘name‘: ‘Bob‘, ‘score‘: 92}, {‘id‘: 3, ‘name‘: ‘Charlie‘, ‘score‘: 78}, {‘id‘: 4, ‘name‘: ‘Alice‘, ‘score‘: 90}, # 另一个Alice ]场景一找到第一个名叫‘Alice‘的学生字典。我们不能直接用students.index({‘name‘: ‘Alice‘})因为这是两个不同的字典对象。我们需要结合next()函数和生成器表达式。# 使用 next() 和生成器表达式找到第一个匹配的项 alice next((stu for stu in students if stu[‘name‘] ‘Alice‘), None) if alice: print(f“找到第一个Alice: {alice}“) # 如果想获得索引可以用 enumerate index next(i for i, stu in enumerate(students) if stu[‘name‘] ‘Alice‘) print(f“她的索引是: {index}“) else: print(“未找到Alice“)这里next()函数的第二个参数None是默认值如果生成器没有产生任何项即没找到则返回None避免了StopIteration异常。场景二找到所有名叫‘Alice‘的学生索引。这就是上一节“所有位置”的变体只是条件更复杂。alice_indices [i for i, stu in enumerate(students) if stu[‘name‘] ‘Alice‘] print(alice_indices) # 输出: [0, 3]6.2 查找自定义对象列表对于自定义类原理相同通过访问对象属性进行判断。class Product: def __init__(self, pid, name, price): self.pid pid self.name name self.price price def __repr__(self): return f“Product({self.pid}, {self.name}, ${self.price})“ inventory [ Product(101, ‘Mouse‘, 25.99), Product(102, ‘Keyboard‘, 45.50), Product(103, ‘Monitor‘, 299.99), Product(104, ‘Mouse‘, 19.99), # 另一款更便宜的鼠标 ] # 找到第一个名为‘Mouse‘的产品 first_mouse next((p for p in inventory if p.name ‘Mouse‘), None) print(first_mouse) # 输出: Product(101, Mouse, $25.99) # 找到所有价格低于30的产品索引 cheap_indices [i for i, p in enumerate(inventory) if p.price 30] print(cheap_indices) # 输出: [0, 3]7. 性能对比与最佳实践选择我们已经介绍了多种查找方法是时候做个总结看看在什么情况下该用什么工具。选择不当小则代码冗余大则性能灾难。操作需求推荐方法原因与说明仅检查元素是否存在element in my_list语法最直观意图清晰。对于频繁检查考虑将列表转为set。获取元素第一次出现的位置my_list.index(element)内置方法直接高效。务必结合try-except或前置in检查处理不存在的情况。统计元素出现次数my_list.count(element)内置方法简单直接。如需统计所有元素频率用collections.Counter。获取元素所有出现的位置列表推导式[i for i,v in enumerate(lst) if vtarget]一行代码Pythonic可读性强。可封装为函数复用。根据复杂条件查找如对象属性生成器表达式 next()(找第一个) 或列表推导式 (找所有)灵活能表达任意查找条件。next(..., default)模式安全优雅。在超大列表中频繁进行存在性检查将列表转换为集合my_set set(my_list)然后使用element in my_set集合的in操作平均时间复杂度为O(1)相比列表的O(n)有巨大优势。注意集合会去重且无序。一个综合性的实战案例解析服务器日志找出所有包含“ERROR”的行及其行号索引并统计“ERROR”出现的总次数。# 模拟日志数据每一行是一个字符串 log_lines [ “[INFO] System started.“, “[WARN] Disk usage above 80%.“, “[ERROR] Database connection failed.“, “[INFO] User ‘admin‘ logged in.“, “[ERROR] File not found: /var/www/config.ini“, “[DEBUG] Processing request ID 12345.“, “[ERROR] Network timeout.“, ] # 1. 获取所有ERROR行的索引 error_indices [idx for idx, line in enumerate(log_lines) if ‘[ERROR]‘ in line] print(f“ERROR行索引: {error_indices}“) # 输出: [2, 4, 6] # 2. 获取所有ERROR行的内容 error_lines [log_lines[i] for i in error_indices] print(“ERROR行内容:“) for line in error_lines: print(f“ - {line}“) # 3. 统计ERROR出现的总次数 (方法1使用count但需要逐行判断) # 这里不能直接用 log_lines.count(‘[ERROR]‘)因为‘[ERROR]‘是子串。 # 我们可以用sum和生成器表达式 error_count sum(1 for line in log_lines if ‘[ERROR]‘ in line) print(f“ERROR总出现次数: {error_count}“) # 输出: 3 # 4. 统计ERROR出现的总次数 (方法2直接用上面得到的索引列表长度) print(f“ERROR总出现次数 (另一种算法): {len(error_indices)}“) # 输出: 3这个案例展示了如何将几种查找技巧组合起来解决一个实际的数据分析问题。先用条件查找if ‘[ERROR]‘ in line拿到所有索引再利用这些索引提取内容最后用两种方法验证统计结果。8. 常见“坑”与最佳实践避雷指南即使知道了方法在实际编码中还是会遇到一些意想不到的问题。下面是我总结的几个常见陷阱和对应的最佳实践。坑1在循环中修改正在遍历的列表这是一个经典错误。当你遍历列表并试图根据条件删除某些元素时直接修改列表长度会导致索引错乱结果不可预料。# 错误示范想删除所有值为2的元素 numbers [1, 2, 3, 2, 4, 2] for i, num in enumerate(numbers): if num 2: del numbers[i] # 危险删除元素后后面元素的索引会前移循环会跳过一些元素 print(numbers) # 输出可能是 [1, 3, 4, 2] 或其它奇怪结果并非预期的 [1, 3, 4]正确做法1创建新列表列表推导式numbers [1, 2, 3, 2, 4, 2] numbers [num for num in numbers if num ! 2] print(numbers) # 输出: [1, 3, 4]正确做法2倒序遍历如果要原地修改可以从后往前遍历这样删除元素不会影响前面待遍历的索引。numbers [1, 2, 3, 2, 4, 2] for i in range(len(numbers)-1, -1, -1): # 从最后一个索引遍历到0 if numbers[i] 2: del numbers[i] print(numbers) # 输出: [1, 3, 4]坑2忽略index()的ValueError前面强调过但值得再提一次。永远不要假设查找一定成功务必用try-except或前置in检查来保护你的代码。坑3对大规模数据使用低效的查找方法这是性能层面的“坑”。如果你有一个包含10万个用户的列表需要在每次用户请求时检查其ID是否在列表中使用user_id in user_list会是O(n)的操作每秒处理成千上万的请求时服务器可能就撑不住了。最佳实践根据数据的使用模式选择数据结构。仅用于成员检查- 使用set。需要保持顺序且频繁按索引访问- 使用list。需要按键快速查找值- 使用dict。坑4混淆“值”查找和“身份”查找index()和count()使用的是值相等进行比较。对于自定义对象这取决于你是否定义了__eq__方法。如果你需要根据对象的内存地址是否是同一个对象来查找需要使用is操作符但这通常不是index()和count()的用途你需要自己写循环。class MyClass: pass obj1 MyClass() obj2 MyClass() lst [obj1, obj2] # 查找 obj1 这个对象本身 try: idx lst.index(obj1) # 这会工作因为查找的是同一个对象引用 print(idx) # 输出: 0 except ValueError: print(“Not found“) # 但是如果你新建一个内容“相同”的对象是找不到的除非你定义了 __eq__ obj3 MyClass() print(obj3 in lst) # 输出: False因为 obj3 不是 lst 中的任何一个元素理解这些细微差别能帮助你在更复杂的场景下写出正确的代码。说到底Python列表的查找功能强大而灵活核心在于理解每种方法背后的原理和代价然后根据你的具体需求做出最合适的选择。从简单的in和index()到灵活的列表推导式和生成器表达式再到针对性能优化的数据结构转换这些工具共同构成了你在Python中处理数据查找问题的工具箱。多用、多试、多思考你自然就能得心应手。

相关新闻

Skills框架:通过校验重试机制提升AI输出稳定性与可预测性

Skills框架:通过校验重试机制提升AI输出稳定性与可预测性

上周在 GitHub 上看到一个项目,叫 Skills,作者是 Matt Pocock。点进去之前,我以为又是一个 AI 工具库,无非是把几个模型 API 封装一下,加点提示词模板。但仔细看完文档和代码结构后,我发现这个项目真正要解…

2026/7/31 15:58:16 阅读更多 →
猫抓浏览器扩展:一站式网页媒体资源嗅探下载终极指南

猫抓浏览器扩展:一站式网页媒体资源嗅探下载终极指南

猫抓浏览器扩展:一站式网页媒体资源嗅探下载终极指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 你是否经常遇到想保存网页上的精彩…

2026/7/31 15:58:16 阅读更多 →
Flowable流程引擎架构与核心表结构解析

Flowable流程引擎架构与核心表结构解析

1. Flowable流程引擎的核心架构解析Flowable作为一款轻量级业务流程引擎,其核心设计理念源于Activiti项目,但在性能优化和架构设计上做了大量改进。整个引擎的核心可以概括为"四大服务两大API"的架构模式。运行时服务(RuntimeServi…

2026/7/31 15:57:16 阅读更多 →

最新新闻

GBase HD数据平台解决用户数据管理核心痛点 简介

GBase HD数据平台解决用户数据管理核心痛点 简介

南大通用GBase HD是一站式大数据基础平台(gbase database)。它将Hadoop生态的核心能力与南大通用自研MPP数据库GBase 8a深度整合,覆盖从数据采集、存储、计算到管理、应用的全链路。GBase HD的逻辑很清楚:不重复造轮子&#xff0c…

2026/7/31 16:43:30 阅读更多 →
C++二叉树从入门到进阶:实现遍历、复制、相似性判断与线索化

C++二叉树从入门到进阶:实现遍历、复制、相似性判断与线索化

1. 项目概述:为什么我们需要深入理解C中的树与二叉树? 在软件开发的日常里,数据结构就像建筑师的蓝图,决定了程序的骨架和效率。而“树”结构,无疑是其中最优雅、最实用,也最常被面试官“拷问”的蓝图之一。…

2026/7/31 16:43:30 阅读更多 →
SegyIO:零内存复制技术实现地震数据读取性能10倍突破

SegyIO:零内存复制技术实现地震数据读取性能10倍突破

SegyIO:零内存复制技术实现地震数据读取性能10倍突破 【免费下载链接】segyio Fast Python library for SEGY files. 项目地址: https://gitcode.com/gh_mirrors/se/segyio 在处理动辄数十GB的SEGY格式地震数据时,传统方法面临读取速度慢、内存占…

2026/7/31 16:43:30 阅读更多 →
芯片江湖风云起:从底层逻辑看行业新变局

芯片江湖风云起:从底层逻辑看行业新变局

最近几年,芯片这个词,几乎成了所有人饭桌上的“硬通货”。不管是聊手机、聊汽车,还是聊AI,最后总绕不开这块小东西。但说实话,大多数人聊芯片,聊的都是“卡脖子”、“突破”、“产能”,听着挺热…

2026/7/31 16:43:30 阅读更多 →
CAN总线终端电阻原理与配置:从信号反射到系统稳定的关键

CAN总线终端电阻原理与配置:从信号反射到系统稳定的关键

1. 项目概述:从一次诡异的通信故障说起 上个月,一个做工业控制的朋友深夜给我打电话,语气里满是困惑和疲惫。他们新调试的一条产线,CAN总线上的几个电机驱动器时不时就“抽风”,数据时断时续,偶尔还会报出一…

2026/7/31 16:43:30 阅读更多 →
深入解析STM32内存机制:从Flash与SRAM原理到嵌入式开发实战避坑指南

深入解析STM32内存机制:从Flash与SRAM原理到嵌入式开发实战避坑指南

1. 项目概述:为什么需要深入了解STM32的内存? 如果你刚开始接触STM32,或者已经用它做过几个项目,可能大部分时间都花在了GPIO、UART、定时器这些外设的配置上。代码能跑起来,功能实现了,就觉得万事大吉。但…

2026/7/31 16:42:29 阅读更多 →

日新闻

物理复制比逻辑复制好在哪?数据库复制原理详解

物理复制比逻辑复制好在哪?数据库复制原理详解

数据库复制是把主库数据同步到备库的机制,分为逻辑复制和物理复制两种。逻辑复制传输的是 SQL 语句或行变更事件,物理复制传输的是存储引擎底层的物理日志。阿里云 PolarDB(云原生数据库)采用物理复制,在同步延迟、数据…

2026/7/31 0:00:34 阅读更多 →
BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南

BilibiliDown:3分钟学会B站视频下载的终极指南 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilib…

2026/7/31 0:00:34 阅读更多 →
有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

有哪些游戏数据AI平台?游戏行业Data+AI融合方案盘点

当前,游戏行业的“DataAI融合”已从概念验证进入价值落地阶段。根据IDC 2025年数据,中国AI游戏云市场规模已达18.6亿元;同时,游戏研发环节AI渗透率高达86%,生成式AI内容普及率超过50%。面对庞大的市场,游戏…

2026/7/31 0:00:34 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻