python中max函数的用法讲解,python中max函数是什么意思

  python中max函数的用法讲解,python中max函数是什么意思

  博文的主要内容如下:

  max和min函数的使用介绍:

  比较迭代的对象元素,求最大/最小值max (iterable,* [,default=obj,key=func])。比较传入的参数,找到最大/最小值max (arg1,arg2,* args,* [,key=func])。本文介绍了如何在复杂结构数据的函数定义中使用键。要求:找到列表中出现频率最高的元素。

  三种实现方法:

  (1)灵活使用max函数的关键参数;

  (2)使用字典统计元素,手工实现封装成函数;

  (3)扩展和解释集合。计数器类,使用计数器对象的most_common方法。

  扩展内容:heapq模块的nlargest函数的部分源代码,集合介绍。most_common方法的计数器类和源代码。

  如何探究max和min函数的作用?我们首先要做的就是读取函数的官方API!

  使用IDE查看函数,或者在交互环境中输入命令:help(max),会给出官方的函数注释:

  def max(*args,key=None):# max的已知特例 max(iterable,*[,default=obj,key=func]) - value max(arg1,arg2,*args,*[,key=func))-带有单个iterable参数的值,返回其最大项。如果提供的iterable为空,默认的仅关键字参数指定要返回的对象。如果有两个或更多参数,则返回最大的参数。 passdef min(*args,key=None):# min的已知特例 min(iterable,*[,default=obj,key=func]) - value min(arg1,arg2,*args,*[,key=func))-具有单个iterable参数的值,返回其最小的项。如果提供的iterable为空,默认的仅关键字参数指定要返回的对象。如果有两个或更多参数,则返回小参数。 Pass显示这样的内容,一般意味着这两个函数的底层实现是一个C语言程序。具体实现方法需要进一步探索源代码。在这篇博文中,我们先来掌握API的内容:

  从功能描述来看。max函数的用法与min函数相同,只是max函数查找最大值,min函数查找最小值。下面仅以max函数为例解释max和min函数的使用:

  注意,使用min和max,要相互比较的元素必须具有可比性,否则会提示错误;我在上一篇文章中讨论了元素之间的比较,这篇博文的最后一部分是关于元素之间的比较。地址:数据类型-容器数据类型

  一、功能的两种使用方式:1,max(iterable, *[, default=obj, key=func]) - value

  Iterable:所有要比较的元素都在iterable对象中。第一个位置参数被传入这个iterable对象,函数将返回iterable对象中最大的元素。如果传入一个字典,会比较字典的键,相当于传入dt.keys()。

  #生成一个0-9数的乱序列表来测试max和min函数from random import shuffle data=list(range(10))shuffle(data)max(data)9min(data)0关键字参数default:当iterable对象中没有元素时,如果指定了default关键字参数,则返回default参数的值。在这种情况下,如果没有指定默认参数,程序会报错:valueerror: max () argis空序列;

  max(range(10))9 max(range(0))trace back(最近一次调用last): file stdin ,line1,in modulevalueeerror:max()arg is空序列下面这段代码是关于我在读取heapq模块的nlargest函数的源代码时,默认关键字参数的使用:

  Def large (n,iterable,key=none): 在数据集中找到最大的n个元素。该函数相当于:sorted(iterable,key=key,reverse=True)[:n] # n==1的捷径是使用max()如果n==1:it=ITER(iterable)sentinel=object()如果key为None: result=max(it,Default=sentinel)else:result=max(it,Default=sentinel,key=key)如果result为sentinel else [result] pass #注意:sentinel为sentinel位置,用于监视传入数据集是否为空。#这里是利用max函数的默认参数设置的岗哨位置,当iterable对象为空时可以返回空列表[]2,max(arg1, arg2, *args, *[, key=func]) - value

  传入多个参数,比较它们,找出最大的一个。

  Max(9,1,2,3)9 II。使用函数的默认参数键:

  这个键应该在一个可调用的对象中传递,通常是一个函数。指定键后,max函数将比较由该键处理的元素。

  1.需求:比如下面这种情况,每种水果的价格信息以字典的形式存储在一个列表中,从而找到最贵的水果和最便宜的水果。

  fruit_shop=[ {name: apple , price: 5.68},{name: orange , price: 4.22},{name: banana , price: 2.65},{name: berries ,Price: 10.75}]便宜=min (fruit _ shop,key=lambda s: s [price])贵=max (fruit _ shop,key=lambda s: s [price]) Print(最便宜的水果是:,便宜的)Print(最贵的水果是:

  Lt=[2,2,3,1,2,2,1,8,5] max (set (lt),key=lt.count) 2注意:如果将count方法作为参数传递给max函数,max函数会比较元素在这里的出现频率。

  1.set(lt)可以获取lt列表中所有唯一的值。简单来说就是复制列表元素,得到一个集合(即集合类型)。

  集合(lt){1,2,3,5,8} 2。list的count方法是查找并计算列表元素出现的次数。

  中尉计数(2)4中尉计数(1)2

  不使用max函数怎么实现呢?

  第一种方法:定义函数,手动使用字典对元素进行计数。

  #使用字典dt计算元素(键)和元素的出现次数(值)。

  #具有最大出现次数的元素与max_count_key一起存储,

  #遍历列表元素,如果字典中已经统计过这个元素的出现次数,那么就不会重复统计;

  否则,使用列表的count方法来统计元素的出现次数,并与max_count_key进行比较。

  max _ count(lt):dt={ } max _ count _ key=none for I in lt:# I not in dt:count=lt . count(I)dt[I]=count if count dt . get(max _ count _ key,0): max_count_key=i返回max _ count _ key

  第二种方式(推荐):使用集合。Counter类,它的most_common()方法是查找序列中出现频率最高的那个。

  收藏。Counter类,它对iterable对象中的元素进行计数,并将它们以键值对的形式存储在Counter对象中。

  Counter对象属于映射,可以通过dict()转换成字典。

  from collections导入计数器c=Counter( MyNameisMarsenHelloWorld )c Counter({ e: 3, l: 3, M: 2, a: 2, s: 2, r: 2, o: 2, y: 1, N: 1, i: 1, n: 1, H: 1, W: 1, d: 1}) dict(c){M: 2, y: 1, N: 1, a: 2, m: 1, e :3, i: 1, s: 2, r: 2如果n为None,则列出所有元素计数。也是从最常见到最不常见。

  该函数的返回值是结果元素的列表。

  c.most_common()[(e ,3)、( l ,3)、( M ,2)、( a ,2)、( s ,2)、( r ,2)、( o ,2)、( y ,1)、( N ,1)、( I ,1)、( N ,1)、( H ,1)、( w ,1)、( d ,1)] C. most _ common (3) [(e ,3)、( l ,3)、( M ,2)]

  #当n==无时,

  方法的实现是通过内置函数对元素计数的统计结果进行逆序排序:sorted (iterable [,key=none [,reverse=false]]。

  #当方法的调用指定n的值时,

  该方法由heapq模块的nlargest(n,iterable [,key=None])函数实现。如上所述,函数用于从iterable对象中查找最大的N个元素。直接使用这个函数,只需要和元素的计数进行比较,就得到最常见的N个元素。

  def most_common(self,n=None):如果n为None: return sorted(self.items(),key=_itemgetter(1),reverse=True)return _ heapq . nlargest(n,self.items(),Key=_itemgetter(1))在了解了Counter类之后,在数据技术的情况下使用起来是非常方便的工具。我们可以优先使用Counter类来实现功能,这比我们用字典手工计数要方便得多。

  对于这个要求2:在寻找出现次数最大或最小的元素时,可以直接用max或min函数求解。

  如果需求是找到最常见的N个元素,那么最好使用Counter类来实现相关的功能。

  lt=[2,2,3,1,2,2,1,8,5]计数器(lt)。most_common(1)[(2,4)]计数器(lt)。most_common(1)[0][0]2

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: