index()用于查找元素首次出现的索引,找到返回下标,未找到抛ValueError;字符串、列表、元组均支持,但不返回全部匹配位置,且区分大小写或值严格相等。

Python 的 index() 函数是字符串、列表、元组等序列类型的一个方法,用于查找某个元素(或子串)在序列中**第一次出现的位置(索引)**。如果找到,返回对应的下标;如果没找到,会抛出 ValueError 异常。
字符串中的 index() 用法
对字符串调用 index(),可以查找子字符串首次出现的起始位置。
- 语法:
str.index(sub[, start[, end]]) -
sub是要查找的子串,必填 -
start和end是可选的切片范围(左闭右开),不填则默认搜索整个字符串 - 找不到时会报错:
ValueError: substring not found
例如:
s = "hello world"s.index("o") # 返回 4(第一个 'o' 在索引 4)
s.index("lo") # 返回 3("lo" 从索引 3 开始)
s.index("x") # 报 ValueError
列表和元组中的 index() 用法
对列表或元组调用 index(),查找某个值第一次出现的索引位置。
立即学习“Python免费学习笔记(深入)”;
- 语法:
list.index(value[, start[, end]]) - 同样支持指定查找范围
- 只匹配**完全相等**的元素(注意:列表里嵌套对象时,比较的是值或引用,取决于对象类型)
例如:
nums = [10, 20, 30, 20, 40]nums.index(20) # 返回 1(第一个 20 的位置)
nums.index(20, 2) # 返回 3(从索引 2 开始找,下一个 20 在索引 3)
nums.index(50) # 报 ValueError
index() 和 find() 的区别(字符串专属)
字符串还有个相似方法 find(),它和 index() 功能类似,但关键区别在于:
-
find()找不到时返回-1,不会报错 -
index()找不到时一定抛异常,适合你**确定目标存在**、想靠报错中断流程的场景
所以,如果你不想处理异常,更倾向用 find() 做安全检查;如果逻辑上必须存在、缺了就该出错,用 index() 更合适。
使用 index() 的注意事项
- 它只返回**第一次匹配**的位置,不是全部位置。要找所有,得用循环或列表推导式配合
enumerate() - 大小写敏感(字符串)或值严格相等(列表),比如
"Hello".index("h")会报错 - 负数索引不被直接支持(
start和end参数本身不能为负,但传入负数会被解释为从末尾计数,行为与切片一致)











