在 Python 中找到列表中元素的索引

Rayven Esplanada 2023年1月30日 2021年3月21日
  1. 在 Python 中使用列表 index() 方法查找列表的索引
  2. 在 Python 中使用 numpy.where() 查找列表的索引
在 Python 中找到列表中元素的索引

本教程将演示如何在 Python 列表中查找元素的位置或索引。

在 Python 中使用列表 index() 方法查找列表的索引

Python 列表有一个内置的方法叫做 index(),该方法接受一个表示要在现有列表中搜索的值的参数。该函数将返回从索引 0 开始找到的第一次出现的索引,而不管它在列表中出现了多少次。

例如,声明一个含有重复值 20 的列表,并调用方法 index(20) 并打印返回的内容。

lst = [13, 4, 20, 15, 6, 20, 20]

print(lst.index(20))

输出:

2

lst 数组中第一次出现的 20 值是在索引 2 上,这是函数调用的结果。具有相同值的其他元素将被忽略,因为它已在列表中找到匹配项。

如果给定列表中不存在某个值,而我们将传递不存在的值称为 index(),会发生什么情况?让我们以这个为例。

lst = [13, 4, 20, 15, 6, 20, 20]

print (lst.index(21))

输出:

ValueError: 21 is not in list

如果在列表中找不到索引,则该函数将引发错误。在某些情况下,这可能不利于调用错误。为避免这种情况,请使用 try...except 块捕获错误,并进行处理,以使如果列表中不存在索引,则将其分配为 -1

lst = [13, 4, 20, 15, 6, 20, 20]

try:
  ndx = lst.index(21)
except:
  ndx = -1

print (ndx)

输出:

-1

这样,就不必调用显式错误,并且程序可以在操作后继续运行。

在 Python 中使用 numpy.where() 查找列表的索引

NumPy 模块具有一个称为 where() 的预定义函数,该函数用于在一个文件中查找多个元素,它接受一个跟定的条件。

在这种情况下,我们将专门使用 where() 来查找给定值的索引。与内置的 index() 函数不同,where() 函数可以返回值所在的索引列表,如果该值在列表中存在多次。如果你需要该值的所有出现,而不仅仅是第一次出现,这就很有用。

第一步是将 Python 列表转换成 NumPy 数组。为此,请调用函数 np.array()

import numpy as np

lst = np.array(lst = [13, 4, 20, 15, 6, 20, 20])

初始化 NumPy 数组后,我们只需要填充 where() 的第一个参数。将第一个参数初始化为 lst == 20 以找到值 20 的给定列表索引。

import numpy as np

lst = [13, 4, 20, 15, 6, 20, 20]

lst = np.array(lst)

result = np.where(lst == 20)

print(result)

输出:

(array([2, 5, 6]),)

由于 NumPy 主要处理矩阵,因此 where() 函数将返回一个数组的元组,而不是单个列表。如果只输出单个列表是首选的,则调用结果的第一个索引,然后使用 print() 将其输出。

import numpy as np

lst = [13, 4, 20, 15, 6, 20, 20]

lst = np.array(lst)

result = np.where(lst == 20)

print(result[0])

输出:

[2 5 6]

请注意,NumPy 数组由单个空格而不是普通逗号定界。

总之,index() 函数是在 Python 列表中查找元素位置的最简单方法。虽然,此函数仅返回给定值首次出现的索引。

如果存在该值的多个实例,则要返回多个索引,则可以选择使用 NumPy 模块中的 where() 函数。

Rayven Esplanada avatar Rayven Esplanada avatar

Skilled in Python, Java, Spring Boot, AngularJS, and Agile Methodologies. Strong engineering professional with a passion for development and always seeking opportunities for personal and career growth. A Technical Writer writing about comprehensive how-to articles, environment set-ups, and technical walkthroughs. Specializes in writing Python, Java, Spring, and SQL articles.

LinkedIn

相关文章 - Python List