Python - 列表中最多 K 个元素的索引


将最多 K 个元素设置为给定列表中的特定值,以过滤元素大于 K 值的那些索引。在 Python 中,我们有一些内置函数,例如 enumerate()、range()、len()、where()、map()、range() 和 filter(),将用于解决列表中最多 K 个元素的索引问题。

让我们来看一个例子。

给定的列表为 [10, 8, 13, 29, 7, 40, 91],K 值设置为 13。

现在,它将检查有多少个元素小于或等于 12,并过滤其大于 12 的那些索引。

最终结果为 [10, 8, 13, 7]

语法

以下语法在示例中使用:

enumerate()

enumerate() 是 Python 中一个内置函数,它跟踪每个给定索引元素的特定迭代。

range()

range() 是 Python 中一个内置函数,它根据给定的范围返回数字序列。

len()

len() 是 Python 中一个内置函数,它返回结果的长度。

where()

where() 是 Python 中一个内置函数,它返回输入数组元素的索引,其中满足特定条件。

map()

内置函数 map() 允许使用一些特定的内置函数迭代输入列表。

filter()

当我们需要根据特定条件过滤项目时,应用 filter() 方法。简单来说,它允许迭代那些被提取以满足条件的元素。

lambda()

Python 中的这个 lambda 函数被称为匿名函数。当需要函数对象时可以使用它。

使用列表推导式

在下面的示例中,我们将通过定义表示最多元素的 K 值来启动程序。然后创建将在列表推导式中使用的列表,其中内置函数 enumerate() 跟踪每个索引元素的特定迭代。使用 <= 运算符,它根据 K 值查找一些最多元素,并将结果以列表的形式返回。

示例

k = 10
list1 = [10, 4, 11, 12, 14]
idx = [i for i, num in enumerate(list1) if num <= k]
print(idx)

输出

 [0,1]

使用循环并将索引附加到新列表

在下面的示例中,程序使用 for 循环,其中变量 i 使用内置函数 len() 和 range() 遍历输入列表。接下来,使用 if 语句根据最多 K 个元素使用 < 运算符设置条件。然后使用 append() 方法通过变量 i 插入元素并打印结果。

示例

k = 40
lst = [10, 20, 50, 60, 30, 80, 90]
idx = []
for i in range(len(lst)):
    if lst[i] < k:
        idx.append(i)
print(idx)

输出

 [0, 1, 4]

使用 NumPy 和布尔索引

在下面的示例中,程序使用 numpy 库、k 值和输入列表 (lst) 来计算最多 K 个元素的索引。内置函数 array() 将列表转换为数组元素并将其存储在变量 arr 中。接下来,内置函数 where() 使用 < 运算符设置 arr 和 K 之间的条件,它返回小于 K 值的那些元素并将它们存储在变量 idx 中。最后,我们使用变量 idx 打印结果。

示例

import numpy as np
k = 12
lst = [10, 4, 11, 12, 14]
arr = np.array(lst)
idx = np.where(arr < k)[0]
print(idx)

输出

 [0 1 2]

使用 enumerate() 和 filter()

在下面的示例中,程序使用一些内置函数,例如 list()、map()、lambda() 和 enumerate() 来查找列表中最多 K 个元素的索引。

示例

k = 8
lst = [10, 4, 11, 12, 14, 1, 2, 89, 0]
idx = list(map(lambda x: x[0], filter(lambda x: x[1] < k, enumerate(lst))))
print(idx)

输出

 [1, 5, 6, 8]

结论

列表中最多 K 个元素是指设置 K 的特定值并返回小于或等于 K 的那些元素的元素。使用了各种内置函数,例如 filter()、lambda、append() 等来解决这个问题。这种类型的程序通常用于算法问题解决。

更新于:2023年8月16日

86 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告