温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么用Python按特定条件查找列表的最小或最大值

发布时间:2022-10-09 09:58:18 来源:亿速云 阅读:135 作者:iii 栏目:web开发

这篇“怎么用Python按特定条件查找列表的最小或最大值”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用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

以上就是关于“怎么用Python按特定条件查找列表的最小或最大值”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI