Python 列表 index() 与示例
列表是以有序序列存储不同数据类型(整数、浮点数、布尔值、字符串等)的项的容器。它是 Python 内置的重要数据结构。数据写在方括号 ([]) 内,值用逗号 (,) 分隔。
列表中的项目从索引 0 开始的第一个元素进行索引。您可以通过添加新项目或更新、删除现有项目来更改创建的列表。它还可以有重复的项目和嵌套列表。
列表中有很多方法可用,其中最重要的一个是 index()。
在本教程中,您将学习:
- Python 列表索引()
- 使用for循环获取列表中元素的索引
- 使用 while 循环和 list.index()
- 使用列表推导获取列表中元素的索引
- 使用 Enumerate 获取列表中元素的索引
- 使用过滤器获取列表中元素的索引
- 使用 NumPy 获取列表中元素的索引
- 使用 more_itertools.locate() 获取列表中元素的索引
Python 列表索引()
list index() 方法可帮助您找到给定元素的第一个最低索引。如果列表中有重复元素,则返回该元素的第一个索引。这是获取索引的最简单直接的方法。
除了内置的列表 index() 方法外,您还可以使用其他方法来获取索引,例如遍历列表、使用列表推导、enumerate()、过滤方法。
list index() 方法返回给定元素的第一个最低索引。
语法
list.index(element, start, end)
参数
参数 | 说明 |
---|---|
元素 | 要获取索引的元素。 |
开始 | 此参数是可选的。您可以定义 start:索引来搜索元素。如果没有给出,则默认值为 0。 |
结束 | 此参数是可选的。您可以指定要搜索的元素的结束索引。如果未给出,则一直考虑到列表末尾。 |
返回值
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
在此示例中,将尝试使用开始和结束索引限制在列表中搜索索引。
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-loop 获取所有索引
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() 函数是 python 提供的内置函数。您可以使用 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(python 包管理器)安装 more_itertools。命令是
pip install more_itertools
步骤 2) 安装完成后,导入 locate 模块如下图
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]
总结:
- list index() 方法可以帮助你找到给定元素的索引。这是获取索引的最简单直接的方法。
- list index() 方法返回给定元素的索引。
- 如果元素不在列表中,则 index() 方法会抛出错误,例如 ValueError:‘Element’ is not in list。
- 除了内置的列表方法外,您还可以使用其他方法来获取索引,例如遍历列表、使用列表推导、使用 enumerate()、使用过滤器等。
- 使用 for-loop 和 while-loop 获取给定元素的多个索引。
- 要获取所有索引,一种快速直接的方法是在列表上使用列表推导。
- 列表推导是用于创建新序列的 Python 函数。
- 它们有助于减少更长的循环并使您的代码更易于阅读和维护。
- 您可以使用 enumerate 来获取列表中元素的所有索引。
- Enumerate() 函数是 python 的内置函数。它将输入作为可迭代对象(即可以循环的对象),输出是每个项目都有计数器的对象。
- filter() 方法根据给定的函数过滤给定的列表。
- Numpy 库专门用于数组。您可以使用 NumPy 来获取列表中给定元素的索引。
- more_itertools.locate() 是另一个有助于查找给定列表索引的 Python 库。
Python