Python 列出 index() 的示例

⚡ 智能摘要

Python list index() 返回给定元素的第一个位置,而 looping 构造函数、列表推导式、enumerate()、filter()、NumPy 库和 more_itertools.locate() 扩展了此技术,以收集包含重复值的列表中每个匹配的索引。

  • 🔘 index() 方法: 内置的 index() 函数返回元素的第一个最低位置,并接受可选的起始和结束限制。
  • ☑️ ValueError: 当元素不存在时,index() 会引发 ValueError,因此为了安全查找,请将调用包装在 try-except 中。
  • 所有出现情况: for 循环、while 循环或列表推导式会收集列表中每个重复出现的值的索引。
  • 🧪 内置辅助函数: enumerate() 和 filter() 将索引与每个项目配对,从而提供简洁的一行方法来收集匹配的位置。
  • 🛠️ NumPy 和 more_itertools: 对于大型数据集,np.where() 和 more_itertools.locate() 可以高效地返回所有匹配的索引。
  • 🤖 人工智能工作流程: 机器学习流程在将数组输入模型之前,会根据索引定位标签位置和匹配样本。

Python 列表索引()

列表是一种容器,用于按顺序存储不同数据类型(整数、浮点数、布尔值、字符串等)的项目。它是一种内置的重要数据结构 Python。数据写在方括号([])内,值之间用逗号(,)分隔。

列表中的项目按索引排序,第一个元素从索引 0 开始。您可以通过添加新项目或更新、删除现有项目来更改创建的列表。它还可以有重复的项目和嵌套列表。

列表有很多可用的方法,其中一个重要的方法是 index()。

Python 列表索引()

列表 index() 方法可帮助您找到给定元素的第一个最低索引。如果列表内有重复元素,则返回元素的第一个索引。这是获取索引的最简单、最直接的方法。

除了内置的列表索引方法 `index()` 之外,你还可以使用其他方法获取索引,例如 `loo`。ping 通过列表,使用列表推导式、enumerate()、filter 方法。

列表 index() 方法返回给定元素的第一个最低索引。

句法

list.index(element, start, end)

参数

参数 描述
element 想要获取索引的元素。
开始 此参数为可选参数。您可以定义要查找元素的起始索引。如果未指定,则默认值为 0。
end 此参数为可选参数。您可以指定要搜索的元素的结束索引。如果没有指定,则一直考虑到列表末尾。

回报值

列表 index() 方法返回给定元素的索引。如果元素不存在于列表中,index() 方法将抛出错误,例如 ValueError: 'Element' is not in the list。

示例:查找给定元素的索引。

在列表 my_list = ['A', 'B', 'C', 'D', 'E', 'F'] 中,我们想知道元素 C 和 F 的索引。

下面的例子显示了如何获取索引。

my_list = ['A', 'B', 'C', 'D', 'E', 'F']
print("The index of element C is ", my_list.index('C'))
print("The index of element F is ", my_list.index('F'))

输出:

The index of element C is  2
The index of element F is  5

示例:在 index() 中使用 start 和 end

在这个例子中,我们将尝试使用起始索引和结束索引来限制在列表中搜索索引。

my_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
print("The index of element C is ", my_list.index('C', 1, 5))
print("The index of element F is ", my_list.index('F', 3, 7))
#using just the startindex
print("The index of element D is ", my_list.index('D', 1))

输出:

The index of element C is  2
The index of element F is  5
The index of element D is  3

例如:测试 index() 方法,但该方法需要一个不存在的元素。

当您尝试在列表中搜索不存在的元素时,将会收到如下所示的错误:

my_list = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']
print("The index of element C is ", my_list.index('Z'))

输出:

Traceback (most recent call last):
File "display.py", line 3, in <module>
print("The index of element C is ", my_list.index('Z'))
ValueError: 'Z' is not in list

使用 for 循环获取列表中元素的索引

通过 list.index() 方法,我们看到它给出了作为参数传递的元素的索引。

现在考虑列表:my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'].名称'Guru索引中出现了 3 次“'”,我想要所有名称为“'”的索引。Guru“。

使用 for 循环,我们应该能够获取多个索引,如下例所示。

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
all_indexes = [] 
for i in range(0, len(my_list)) : 
    if my_list[i] == 'Guru' : 
        all_indexes.append(i)
print("Originallist ", my_list)
print("Indexes for element Guru : ", all_indexes)

输出:

Originallist  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru :  [0, 3, 6]

使用 while 循环和 list.index()

使用 while 循环将循环遍历给定的列表以获取给定元素的所有索引。

在列表中:my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'],我们需要元素'的所有索引Guru“。

下面的示例展示了如何使用 while 循环获取所有索引。

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
result = []
elementindex = -1
while True:
    try:
        elementindex = my_list.index('Guru', elementindex+1)
        result.append(elementindex)
    except  ValueError:
        break
print("OriginalList is ", my_list)
print("The index for element Guru is ", result)

输出:

OriginalList is  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
The index for element Guru is  [0, 3, 6]

使用列表推导获取列表中元素的索引

要获取所有索引,一种快速而直接的方法是在列表上使用列表推导。

列表推导是 Python 用于创建新序列(例如列表、字典等)的函数,即使用已经创建的序列。

它们有助于减少较长的循环并使您的代码更易于阅读和维护。

以下示例展示了如何操作:

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
print("Originallist ", my_list)
all_indexes = [a for a in range(len(my_list)) if my_list[a] == 'Guru']
print("Indexes for element Guru : ", all_indexes)

输出:

Originallist  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru :  [0, 3, 6]

使用 Enumerate 获取列表中元素的索引

Enumerate() 函数是内置函数,可通过以下方式使用: Python你可以使用 enumerate 函数来获取列表中所有元素的索引。它接受一个可迭代对象(即可以循环的对象)作为输入,输出是一个包含每个元素计数器的对象。

下面的示例展示了如何使用 enumerate 函数对列表进行枚举,以获取给定元素的所有索引。

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
print("Originallist ", my_list)
print("Indexes for element Guru : ", [i for i, e in enumerate(my_list) if e == 'Guru'])

输出:

Originallist  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru :  [0, 3, 6]

使用过滤器获取列表中元素的索引

filter() 方法根据给定的函数过滤给定的列表。列表的每个元素都将传递给函数,并根据函数中给出的条件过滤所需的元素。

让我们使用 filter() 方法来获取列表中给定元素的索引。

以下示例展示了如何在列表中使用筛选功能。

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
print("Originallist ", my_list)
all_indexes = list(filter(lambda i: my_list[i] == 'Guru', range(len(my_list)))) 
print("Indexes for element Guru : ", all_indexes)

输出:

Originallist  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru :  [0, 3, 6]

使用 NumPy 获取列表中元素的索引

NumPy库专门用于处理数组。因此,我们将使用NumPy来获取给定列表中所需元素的索引。

要使用 NumPy,我们必须安装它并导入它。

以下是具体步骤:

步骤1) 安装 NumPy

pip install numpy

步骤2) 导入 NumPy 模块。

import numpy as np

步骤3) 使用 np.array 将列表转换为数组。

my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
np_array = np.array(my_list)

步骤4) 使用 np.where() 获取所需元素的索引。

item_index = np.where(np_array == 'Guru')[0]

最终的工作代码及输出如下:

import numpy as np
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
np_array = np.array(my_list)
item_index = np.where(np_array == 'Guru')[0]
print("Originallist ", my_list)
print("Indexes for element Guru :", item_index)

输出:

Originallist['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru : [0 3 6]

使用 more_itertools.locate() 获取列表中元素的索引

`more_itertools.locate()` 函数用于查找列表中元素的索引。该模块将与以下模块配合使用: Python 版本 3.5+。软件包 more_itertools 必须先安装才能使用它。

以下是安装和使用 more_itertools 的步骤:

步骤1) 使用 pip 安装 more_itertools(Python 包管理器)。该命令是

pip install more_itertools

步骤2) 安装完成后,导入 定位 模块如下图所示。

from more_itertools import locate

现在您可以在列表中使用定位模块,如下例所示:

from more_itertools import locate
my_list = ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru'] 
print("Originallist : ", my_list)
print("Indexes for element Guru :", list(locate(my_list, lambda x: x == 'Guru')))

输出:

Originallist :  ['Guru', 'Siya', 'Tiya', 'Guru', 'Daksh', 'Riya', 'Guru']
Indexes for element Guru : [0, 3, 6]

常见问题

当元素不存在时,`index()` 方法会引发 `ValueError` 异常。请将该调用放在 `try-except` 代码块中,或者先使用 `in` 运算符检查元素是否属于某个类别,以避免因元素缺失而导致程序崩溃。

index() 返回的值始终是从起始位置开始计数的非负索引位置。您可以传递负的起始或结束参数来限制搜索范围,但 index() 本身永远不会为找到的元素返回负索引。

是的。index() 会精确比较元素,所以'Guru' 和 'guru' 被视为不同的值。搜索大小写错误的字符串会引发 ValueError 异常。如果需要不区分大小写的匹配,请在搜索前使用 lower() 函数对字符串进行规范化。

使用 in 运算符,例如 if 'Guru' 在 my_list 中。它返回 True 或 False 而不会引发错误,因此只有当元素实际存在于列表中时,才能安全地调用 index()。

对于单次查找,内置的 `index()` 函数已经很高效了,因为它只查找第一个匹配项。如果需要重复查找多个值,可以构建一个字典映射。ping 每个值都对应一个索引,这使得每次搜索都变成了一个快速的常数时间操作。

Python 列表提供了 `index()` 方法,但没有 `find()` 方法。当元素不存在时,`index()` 会抛出 `ValueError` 异常,而字符串类型的 `find()` 方法返回 -1。对于列表,应该捕获错误或使用 `in` 运算符来检查元素是否属于列表。

定位元素的索引有助于将类别标签映射到数值位置、查找预测类别出现的位置,或在训练前对齐特征列。NumPy 通过 `np.where()` 扩展了这一功能,可以快速查找大型数组和数据集中的索引。

是的。GitHub Copilot 和智能 AI 助手可以根据普通注释生成 index()、enumerate() 和基于理解的查找,为缺失值提供安全的错误处理建议,并重构循环,但您仍然应该测试边界情况并确认返回的位置。

总结一下这篇文章: