用 Python 查找列表中元素的所有索引
在 Python 中,列表用于在一个名称下存储多个元素。每个元素可以通过它在列表中的位置来访问。一个元素可以出现在列表中的多个位置。
在本教程中,我们将介绍如何查找列表中特定元素的所有出现的索引。我们将在下面的列表中查找元素 1
的所有索引。
l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
使用 for
循环查找元素的所有出现的指数
我们可以很容易地对列表进行迭代,并将每个元素与所需元素进行比较,并找到其索引。我们可以将最终结果存储在一个新的列表中。在下面的例子中,我们使用 range()
函数对列表进行迭代。
l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
pos = []
x = 1 # The required element
for i in range(len(l1)):
if l1[i] == x:
pos.append(i)
print(pos)
输出:
[0, 2, 8]
实现上述代码的更高效、更紧凑的方法是使用下面的列表推导。
l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
pos = [i for i in range(len(l1)) if l1[i] == 1]
print(pos)
输出:
[0, 2, 8]
同样,我们也可以使用 enumerate()
函数,将索引和值一起返回。比如说
l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
pos = [i for i, x in enumerate(l1) if x == 1]
print(pos)
输出:
[0, 2, 8]
使用 numpy.where()
函数查找 Python 中一个元素的所有出现的索引
NumPy
库有 where()
函数,用于根据某些条件返回一个数组中元素的索引。对于这个方法,我们必须将列表作为一个数组传递。最终的结果也是以数组的形式出现。下面的代码片段展示了我们如何使用这个方法。
import numpy as np
l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
pos = np.where(np.array(l1) == 1)[0]
print(pos)
输出:
[0 2 8]
使用 more_itertools.locate()
函数查找元素的所有出现的指数
more_itertools
是一个第三方的方便模块。它有许多功能,可以在处理可迭代元素时创建高效和紧凑的代码。该模块中的 locate()
函数返回条件为 True
的元素的索引。它返回一个 itertools
对象。下面的代码片段解释了我们如何使用这个方法。
from more_itertools import locate
l1 = [1, 5, 1, 8, 9, 15, 6, 2, 1]
pos = list(locate(l1, lambda x: x == 1))
print(pos)
输出:
[0, 2, 8]
我们使用 list()
函数来确保最终结果是一个列表的形式。
相关文章
Pandas DataFrame DataFrame.shift() 函数
发布时间:2024/04/24 浏览次数:133 分类:Python
-
DataFrame.shift() 函数是将 DataFrame 的索引按指定的周期数进行移位。
Python pandas.pivot_table() 函数
发布时间:2024/04/24 浏览次数:82 分类:Python
-
Python Pandas pivot_table()函数通过对数据进行汇总,避免了数据的重复。
Pandas read_csv()函数
发布时间:2024/04/24 浏览次数:254 分类:Python
-
Pandas read_csv()函数将指定的逗号分隔值(csv)文件读取到 DataFrame 中。
Pandas 多列合并
发布时间:2024/04/24 浏览次数:628 分类:Python
-
本教程介绍了如何在 Pandas 中使用 DataFrame.merge()方法合并两个 DataFrames。
Pandas loc vs iloc
发布时间:2024/04/24 浏览次数:837 分类:Python
-
本教程介绍了如何使用 Python 中的 loc 和 iloc 从 Pandas DataFrame 中过滤数据。
在 Python 中将 Pandas 系列的日期时间转换为字符串
发布时间:2024/04/24 浏览次数:894 分类:Python
-
了解如何在 Python 中将 Pandas 系列日期时间转换为字符串