【Python】按特定条件查找列表的最小/最大值

1. 引言

Python中的minmax函数允许我们找到列表(或类似可迭代数据结构)的最小值/最大值,但是我们可以对其扩展,即根据特定应用条件来进行相应的查找。
闲话少说,我们直接开始吧!

2. 基础用法

我们知道,函数MinMax的功能和其名字意义一样,用来返回列表中的最小和最大值,我们来看个简单的例子。
这里假设我们有以下列表:

list1 = [3,6,5,2,9,7]

此时我们可以使用min(list1)函数来获得列表list1里最小的元素,同时我们也可以使用max(list1)函数来获得列表list1里最大的元素。

minimum = min(lis) # 2
maximum = max(lis) # 9

3. 加入特定条件

但是,如果我们想使用某个条件找到列表的最小/最大值,该怎么办?我们可以使用参数key来实现。我们观察如下列表:

lis = ["apple", "orange", "pear", "pineapple", "banana"]

这里上述列表为字符串列表,如果我们希望查找包含字符数目最少/多的元素。我们可以这样定义查找条件函数:

def condition(string):
    return len(string)

上述条件函数接受列表中的元素,并返回我们希望设定的条件来查找最小或最大值,我们将上述条件作为参数传递给函数minmax,如下:

minimum = min(lis, key=condition)  # pear
maximum = max(lis, key=condition)  # pineapple

这里值得一提的是,关键字key需要传入函数。

4. 使用lambda表达式

更进一步,我们可以将上述条件函数改写成lambda表达式,这样就可以使用简洁的代码来实现功能强大的作用。如下:

def condition1(string):
    return len(string)
condition1 = lambda string: len(string)

可以看出,二者功能一摸一样,但lambda表达式的写法更加简洁。
此时根据字符串长度求列表最小最大元素可以改写成如下形式:

minimum = min(lis, key=lambda s:len(s))        # pear
maximum = max(lis, key=lambda s:len(s))        # pineapple

5. 举一反三

假设我们希望通过统计字母a的数量来查找字符串列表的最小/最大元素,我们可以这样实现:

lis = ["apple", "orange", "pear", "pineapple", "banana"]
min(lis, key=lambda s:s.count("a"))  # apple
max(lis, key=lambda s:s.count("a"))  # banana

更近一步,通过元音的数量(a、e、i、o、u)来确定字符串列表的最小/最大元素,实现如下:

lis = ["apple", "orange", "pear", "pineapple", "banana"]
min(lis, key=lambda s:sum([c in "aeiou" for c in s]))  # apple
max(lis, key=lambda s:sum([c in "aeiou" for c in s]))  # pineapple

根据整数列表的最后一个数字求其最小值/最大值:

lis = [4,5,19,101,302]
min(lis, key=lambda n:str(n)[-1])  # 101
max(lis, key=lambda n:str(n)[-1])  # 19

6. 总结

本文重点介绍了在Python中如何根据设定的特定条件来查找列表中的最小和最大元素,并介绍了使用lambda函数来简化代码量的用法,最后给出了相应的扩展应用栗子,并给出了代码示例。

您学废了嘛?

【Python】按特定条件查找列表的最小/最大值

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年3月29日
下一篇 2023年3月29日

相关推荐