Python - 列表中最多 K 个元素的索引
将给定列表中的最多 K 个元素设置为特定值,以过滤那些元素索引大于 K 值的元素。在 Python 中,我们有一些内置函数,例如 enumerate()、range()、len()、where()、map()、range() 和 filter(),它们将用于解决列表中最多 K 个元素的索引。
让我们举个例子。
给定列表 [10, 8, 13, 29, 7, 40, 91] 和设置为 13 的 K 值。
现在,它将检查有多少个元素小于或等于 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() 等。这种类型的程序通常用于算法问题解决。