Python List index() 示例

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

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

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

Python List index()

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

除了内置的 list index() 方法之外,您还可以通过其他方式获取索引,例如循环遍历列表、使用列表推导式、enumerate()、filter 方法等。

list index() 方法返回给定元素的第一个最小索引。

语法

list.index(element, start, end)

参数

参数 描述
element 您想获取其索引的元素。
start 此参数是可选的。您可以定义搜索元素的起始索引。如果未给出,则默认值为 0。
end 此参数是可选的。您可以为要搜索的元素指定结束索引。如果未给出,则认为搜索直到列表末尾。

返回值

list 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

在此示例中,我们将尝试使用 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() 方法根据给定的函数过滤给定列表。列表的每个元素都将被传递给函数,并且所需的元素将根据函数中给定的条件进行过滤。

让我们使用 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(Python 包管理器)安装 more_itertools。命令是

pip install more_itertools

第 2 步) 安装完成后,像下面一样导入 **locate** 模块

from more_itertools import locate

现在您可以像下面的示例一样在列表上使用 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]

摘要

  • list index() 方法可以帮助您找到给定元素的索引。这是获取索引最简单、最直接的方法。
  • list index() 方法返回给定元素的索引。
  • 如果元素不在列表中,index() 方法将引发错误,例如 ValueError: ‘Element’ is not in list。
  • 除了内置的 list 方法,您还可以通过其他方式获取索引,例如循环遍历列表、使用列表推导式、使用 enumerate()、使用 filter 等。
  • 使用 for 循环和 while 循环获取给定元素的多个索引。
  • 要获取所有索引,一种快速而直接的方法是对列表使用列表推导式。
  • 列表推导式是用于创建新序列的 Python 函数。
  • 它们有助于减少较长的循环,并使您的代码更易于阅读和维护。
  • 您可以使用 enumerate 获取列表中元素的所有索引。
  • Enumerate() 函数是 Python 的内置函数。它接受一个可迭代对象(即可以循环的对象)作为输入,并输出一个带有每个项目计数的对象。
  • filter() 方法根据给定的函数过滤给定列表。
  • Numpy 库专门用于数组。您可以使用 NumPy 来获取给定列表中元素的索引。
  • more_itertools.locate() 是另一个 Python 库,可以帮助查找给定列表的索引。