在Python中找到大于K的最小元素

在使用python进行数据分析期间,我们遇到了许多情况,我们必须从满足某些条件的列表中过滤掉元素。在本文中,我们将看到如何从列表中获取一个大于该元素但在大于给定元素的所有此类元素中最小的元素。

与分钟

我们设计一个for循环以遍历列表的每个元素,同时满足其值大于k的一般条件。然后,对于所有此类元素,我们应用min函数以获取最小值。

示例

listA = [1,5,6, 7,11,14]

# Original list
print("Given list : ",listA)

k = 8

# using min
res = min(i for i in listA if i > k)

# Result
print("Missing elements from the list : \n" ,res)

输出结果

运行上面的代码给我们以下结果-

Minimum element gerater than k :
11

带过滤器

在这里,我们使用lambda函数获取值大于K的元素。然后应用filter函数仅获取那些值。最后应用min函数从该列表中获取最小值。

示例

listA = [1,5,6, 7,11,14]

# printing original list
print("Given list : ",listA)

k = 8

# using min
res = min(filter(lambda i: i > k, listA))

# Result
print("Minimum element gerater than k : \n" ,res)

输出结果

运行上面的代码给我们以下结果-

Minimum element gerater than k :
11

使用bisect_right

bisect_right函数在bisect模块中可用。它在大于或等于提供给它的某个参数值的点上将列表二等分。在此示例中,我们将列表进行排序,然后应用bisect_right函数。我们获得大于所需值的元素索引。

示例

from bisect import bisect_right
listA = [1,5,6, 7,11,14]

# printing original list
print("Given list : ",listA)

k = 8

listA.sort()
# Using bisect_right
res = listA[bisect_right(listA, k)]

# Result
print("Minimum element gerater than k : \n" ,res)

输出结果

运行上面的代码给我们以下结果-

Minimum element gerater than k :
11