Python 如何查找列表中元素的索引?

list.index(x) 返回元素首次出现的索引,找不到抛 ValueError;找全部匹配用 enumerate 列表推导;NumPy 数组用 np.where。本文给出各场景写法与安全用法。

最佳实践
Python 如何查找列表中元素的索引?封面

最直接:my_list.index(目标值) 返回第一个匹配的下标(从 0 开始);注意找不到会抛 ValueError,用 in 先判断或 try 捕获。

基本用法

fruits = ['apple', 'banana', 'cherry', 'banana']
fruits.index('banana')        # 1(第一个匹配)
fruits.index('banana', 2)     # 3(从下标 2 开始找)

找全部匹配的索引

[i for i, x in enumerate(fruits) if x == 'banana']   # [1, 3]

按条件查找(找第一个满足条件的)

nums = [3, 8, 15, 7]
i = next(i for i, x in enumerate(nums) if x > 10)   # 2

安全写法

if 'mango' in fruits:
    i = fruits.index('mango')
# 或
try:
    i = fruits.index('mango')
except ValueError:
    i = -1

常见问题(FAQ)

Q:index 的时间复杂度? O(n) 线性查找;频繁查找考虑 dict/set 或排序后 bisect。

Q:NumPy 数组呢? np.where(arr == x)[0] 返回全部匹配下标数组。

获取专属方案

联系我们

加入社区

微信扫码
加入官方交流群

立即体验

在线开通,按量计费,真正的云服务!

立即开始

选择观测云版本

代码托管平台