这篇“怎么用Python按特定条件查找列表的最小或最大值”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么用Python按特定条件查找列表的最小或最大值”文章吧。
Python中的min
和max
函数允许我们找到列表(或类似可迭代数据结构)的最小值/最大值,但是我们可以对其扩展,即根据特定应用条件来进行相应的查找。
我们知道,函数Min
和Max
的功能和其名字意义一样,用来返回列表中的最小和最大值,我们来看个简单的例子。
这里假设我们有以下列表:
list1 = [3,6,5,2,9,7]
此时我们可以使用min(list1)
函数来获得列表list1
里最小的元素,同时我们也可以使用max(list1)
函数来获得列表list1
里最大的元素。
minimum = min(lis) # 2 maximum = max(lis) # 9
但是,如果我们想使用某个条件找到列表的最小/最大值,该怎么办?我们可以使用参数key
来实现。我们观察如下列表:
lis = ["apple", "orange", "pear", "pineapple", "banana"]
这里上述列表为字符串列表,如果我们希望查找包含字符数目最少/多的元素。我们可以这样定义查找条件函数:
def condition(string): return len(string)
上述条件函数接受列表中的元素,并返回我们希望设定的条件来查找最小或最大值,我们将上述条件作为参数传递给函数min
和max
,如下:
minimum = min(lis, key=condition) # pear maximum = max(lis, key=condition) # pineapple
这里值得一提的是,关键字key
需要传入函数。
更进一步,我们可以将上述条件函数改写成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
假设我们希望通过统计字母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按特定条件查找列表的最小或最大值”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注亿速云行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。