亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> Python

Python list.index() 详解:查找元素位置的实用指南与示例

Python 列表是有序集合,可容纳任意类型元素——整数、字符串、布尔值、嵌套列表等。内置 list.index() 方法是定位元素在序列中位置的最快方式。下面将通过代码片段与替代技术,分步讲解如何获取索引,包括元素重复出现的情况。

理解 list.index()

list.index() 返回指定值首次出现的最小索引。若值不存在,抛出 ValueError。参考 Python 官方文档。

语法

list.index(element, start=0, end=len(list))

参数

参数说明
element要查找的值
start可选。起始搜索索引,默认 0。
end可选。结束搜索索引(不含),默认列表长度。

返回值

返回首个匹配元素的整数索引。若元素不存在,抛出 ValueError。

示例:基本用法

my_list = ['A', 'B', 'C', 'D', 'E', 'F']
print("Index of 'C':", my_list.index('C'))  # 2
print("Index of 'F':", my_list.index('F'))  # 5

示例:使用 start 和 end

my_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
print("Index of 'C' between 1 and 5:", my_list.index('C', 1, 5))  # 2
print("Index of 'F' between 3 and 7:", my_list.index('F', 3, 7))  # 5
print("Index of 'D' starting from 1:", my_list.index('D', 1))      # 3

示例:元素不存在

my_list = ['A', 'B', 'C', 'D']
try:
    my_list.index('Z')
except ValueError as e:
    print(e)  # 'Z' is not in list

获取重复元素的所有索引

当值多次出现时,list.index() 仅返回首个位置。以下是获取所有索引的多种方法。

使用 for 循环

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
indices = []
for i, val in enumerate(my_list):
    if val == 'Guru':
        indices.append(i)
print(indices)  # [0, 3, 6]

使用 while 循环配合 index()

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
indices = []
next_index = -1
while True:
    try:
        next_index = my_list.index('Guru', next_index + 1)
        indices.append(next_index)
    except ValueError:
        break
print(indices)  # [0, 3, 6]

列表推导式

indices = [i for i, val in enumerate(my_list) if val == 'Guru']
print(indices)  # [0, 3, 6]

使用 enumerate()

indices = [i for i, val in enumerate(my_list) if val == 'Guru']
print(indices)  # [0, 3, 6]

使用 filter()

indices = list(filter(lambda i: my_list[i] == 'Guru', range(len(my_list))))
print(indices)  # [0, 3, 6]

进阶技巧

NumPy 处理大数据集

处理数值或大量文本数据时,转为 NumPy 数组可加速搜索。

pip install numpy
import numpy as np
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
array = np.array(my_list)
indices = np.where(array == 'Guru')[0]
print(indices)  # [0 3 6]

more_itertools.locate()

函数式风格首选,more_itertools.locate() 返回满足谓词的索引迭代器。

pip install more_itertools
from more_itertools import locate
indices = list(locate(my_list, lambda x: x == 'Guru'))
print(indices)  # [0, 3, 6]

关键要点

Python

  1. 掌握 C++ std::list:语法、函数与实战示例
  2. Python print() 函数完全指南:基础用法、空行打印与自定义结束符
  3. Python strip() 方法完全指南:去除首尾空白与自定义字符实战
  4. Python str.count() 完全指南:统计字符与子串出现次数实战
  5. Python round() 函数详解与实战示例
  6. 精通 Python map() 函数:语法、示例与最佳实践
  7. Python timeit():精准测量代码执行时间与实战示例
  8. Python collections.Counter:高效计数、更新与算术运算
  9. Python list.count() 专家指南:语法、示例与性能解析
  10. Python 列表去重完全指南:七种方法与最佳实践
  11. Python 列表删除元素全攻略:remove、pop、clear 与 del 详解
  12. Python 列表完全指南:创建、访问、操作与内置方法详解