在 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()
函数。
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