在 Python 中查找列表中最小元素的索引

Python 中的列表对象模拟一个数组并将不同的元素存储在一个通用名称下。元素存储在特定的索引中,我们可以使用它来访问它们。

我们可以使用列表执行不同的操作。使用内置列表函数(如 max()min()len 等来返回最大元素、最小元素和列表长度非常简单。

本文将在 Python 列表中找到最小元素索引。

在 Python 中使用 min() 和 index() 函数查找列表中最小元素的索引

在 Python 中,我们可以使用 min() 函数来查找可迭代对象中的最小项。然后,列表的 index() 函数可以返回列表中任何给定元素的索引。

如果给定元素不在列表中,则会引发 ValueError

例子:

lst = [8,6,9,-1,2,0]
m = min(lst)
print(lst.index(m))

输出:

3

请记住,列表的索引从 0 开始。上面的答案显示 3,因为最小的元素位于第四位。

在 Python 中使用 min() 函数和 for 循环查找列表中最小元素的索引

我们可以用 for 循环代替前面方法中 index() 函数的使用。它可以遍历列表并单独比较元素。

当匹配时,我们返回该索引的值并使用 break 语句跳出循环。

例子:

lst = [8,6,9,-1,2,0]
m = min(lst)
for i in range(len(lst)):
    if(lst[i]==m):
        print(i)
        break

输出:

3

在 Python 中使用 min() 和 enumerate() 函数查找列表中最小元素的索引

enumerate() 函数接受一个可迭代对象。它返回一个包含可迭代元素的对象,其中包含元素索引的计数器变量。

这个对象可以使用 for 循环进行迭代。然后,我们将使用列表推导遍历这个对象,创建一个新列表,并使用 min() 函数来定位列表中的最小元素。

我们将在一行中获取元素及其索引。

例子:

lst = [8,6,9,-1,2,0]
a,i = min((a,i) for (i,a) in enumerate(lst))
print(i)

输出:

3

在 Python 中使用 min() 和 operator.itemgetter() 函数查找列表中最小元素的索引

Python 中的 operator 模块提供了额外的运算符,我们可以使用它们来简化我们的代码。该模块中的 itemgetter() 函数返回一个可调用对象,并且可以从其操作数中检索一些元素。

min() 函数接受 key 参数来确定比较标准。我们可以提供 itemgetter() 函数作为此参数的值,以返回最小元素的索引。

例子:

from operator import itemgetter
lst = [8,6,9,-1,2,0]
i = min(enumerate(lst), key=itemgetter(1))[0]
print(i)

输出:

3

我们首先在前面的方法中找到最小元素及其索引。此方法在一行中完成这两个步骤;因此,它被认为是一种更快的方法。

在 Python 中使用 min() 和 __getitem__() 函数查找列表中最小元素的索引

operator.itemgetter() 函数在内部调用魔术函数 __getitem__()。我们可以通过直接使用该函数并提高代码速度来避免导入运算符模块的需要。

在 Python 中返回列表中的最小元素索引类似于前面的方法。

例子:

lst = [8,6,9,-1,2,0]
i = min(range(len(lst)), key=lst.__getitem__)
print(i)

输出:

3

在 Python 中使用 numpy.argmin() 函数查找列表中最小元素的索引

numpy.argmin() 函数用于查找 Python 中最小元素的位置。我们可以将此函数与列表一起使用,它将返回一个包含列表最小元素索引的数组。

例子:

import numpy as np
lst = [8,6,9,-1,2,0]
i = np.argmin(lst)
print(i)

输出:

3

结论

最后,我们讨论了几种方法来查找列表中最小元素的索引。min() 函数是所有方法中最常见的。

enumerate()itemgetter() 等不同的函数可用于创建不同的方法。最后一种方法,使用 numpy.argmin() 函数,更直接。