python min函数时间复杂度_作为Python程序员,你真的会用max()和min()函数吗?
在Python的七十多个内置函数中,max()和min()是比较常用的两个,用来查找一组数据中的最大值和最小值。这两个函数看似简单,实则暗藏了很多意想不到的功能,尤其是key参数,更为这两个函数增加了类似map()函数的功能。如果应用在代码中,必定产生鬼斧神工、匪夷所思的感觉,令人叹为观止!
1. 典型应用场景
这是max()和min()函数最常见的应用场景:从多个数值型参数中返回最大/最小值,或者返回数值型列表中的最大/最小值。这里说的数值型,是指整型和浮点型。
>>> max(1,3,5,7) # 返回多个数值型参数中的最大值
7
>>> min([2,4,6,8]) # 返回数值型列表中的最小值
2
2. 比较字符串
输入参数或列表元素的类型,除了数值型,还可以是字符串,但不能数值型和字符串型的混合。两个字符串比较大小的规则是从首字符开始比较其字符的ASCII码值,若相等,则比较后一位字符,直至分出大小。
>>> max(['a','b','c']) # 返回列表中最大的字符串
'c'
>>> min('2020-06-23 12:00:00', '2020-06-23 11:50:00') # 返回最早的日期时间字符串
'2020-06-23 11:50:00'
>>> max('1', '9', '10', '100') # 返回多个字符串中最大的字符串
'9'
>>> min('1', '9', '10', '100') # 返回多个字符串中最小的字符串
'1'
3. 比较列表或元组
除了数值型、字符串型,max()和min()函数还可以用于比较列表或元组的大小:顺序比较各元素,直至分出大小。当然,用来比较的元素必须是同一种类型,要么都是数值型,要么都是字符串型。
>>> max([8,4],[6,8]) # 返回多个列表中最大的列表
[8, 4]
>>> max([8,4],[8,4,2]) # 返回多个列表中最大的列表
[8, 4, 2]
>>> min(['8',4],['8',4,'2']) # 返回多个列表中最小的列表
['8', 4]
>>> min(('8',4, '3'),('8',4,'2')) # 返回多个元组中最小的元组
('8', 4, '2')
4. 找出字典、字符串、迭代器中的最大最小值
max()和min()函数不仅能比较列表或元组的元素的大小,也能从集合、字典、字符串、range对象、迭代器等对象中找出最大和最小的元素。
>>> max({3,4,5,6}) # 返回集合中的最大值
6
>>> min({'x':5, 'y':7, 'z':3}) # 返回字典元素中的最小值,结果是最小的键
'x'
>>> max("I'm xufive.") # 返回字符串中的最大字符(有点意外吧?)
'x'
>>> min("I'm xufive.") # 返回字符串中的最小字符
' '
>>> max(range(5)) # range()函数返回一个range对象
4
>>> max(map(abs, [-1,2,-3])) # map()函数返回一个迭代器
3
5. 使用key参数
我们注意到,使用max()和min()函数返回字典的最大/最小值,实际得到的是字典的键的最大/最小值。那么如何得到字典的值的最大/最小值呢?很简单,使用max()和min()函数的key参数。不过,需要提醒的是,使用key参数,返回的是字典中最大/最小值的键,而不是最大/最小值。
>>> d = {'x':5, 'y':7, 'z':3}
>>>> min(d) # 返回字典中最小的键
'x'
>>> min(d, key=lambda x:d[x]) # 返回字典中最小值的键,而非最小值
'z'
>>> max(d) # 返回字典中最大的键
'z'
>>> max(d, key=lambda x:d[x]) # 返回字典中最大值的键,而非最大值
'y'
6. 综合练习
最后,我们来做两道练习题,看看max()和min()函数的威力有多大。这两个问题并不难,初学者也能轻松给出答案,但是,要想写得优雅漂亮,非max()和min()函数不可。列表 [1,3,5,7,9,11,13,15,17]中,哪一个元素的正弦值最小?
列表 [8,5,2,4,3,6,5,5,1,4,5] 中,哪一个元素出现的频率最高?
问题1的参考答案:
>>> import math
>>> a = [1,3,5,7,9,11,13,15,17]
>>> min(a, key=math.sin)
11
>>> math.sin(11) # 元素11的正弦值最小
-0.9999902065507035
问题2的参考答案:
>>> a = [8,5,2,4,3,6,5,5,1,4,5]
>>> max(set(a), key=a.count)
5
>>> a.count(5) # 元素5出现了4次,次数最多
4
python min函数时间复杂度_作为Python程序员,你真的会用max()和min()函数吗?相关推荐
- python父亲节礼物_父亲节程序员硬核示爱:你能看懂几条
摘要:祝所有的父亲,节日快乐! 父亲节要送什么? 对老爸的爱在心口难开怎么办? 都说父爱如山,山也需要偶尔的温情问候,与其在网上遍寻各种攻略,不如敲起手中的键盘,码出几行代码,用你最熟悉的方式表达对父 ...
- python交流企鹅裙_神级程序员巧用python开发王者荣耀把妹神器,一路升级上王者!...
Python(发音:英[?pa?θ?n],美[?pa?θɑ:n]),是一种面向对象.直译式电脑编程语言,也是一种功能强大的通用型语言,已经具有近二十年的发展历史,成熟且稳定.它包含了一组完善而且容易理 ...
- python中国地图程序设计_神级程序员教你用Python如何画一个中国地图!(好好玩)...
为什么是Python 先来聊聊为什么做数据分析一定要用 Python 或 R 语言.编程语言这么多种, Java , PHP 都很成熟,但是为什么在最近热火的数据分析领域,很多人选择用 Python ...
- 爬虫python软件收费吗_身为一个程序员看小说还需要花钱么,不存在的,Python爬虫摆设的...
虽然说Python可以爬取小说,但是咱们还是得支持作者的辛苦写作的结果,支持正版! 本篇文章虽然是爬取网络小说,主要还是学习交流为主嘛! 什么是网络爬虫 百度百科解释: 网络爬虫(又被称为网页蜘蛛,网 ...
- python count函数时间复杂度_关于python:了解如何测量函数的时间复杂度
这是功能: 1 2 3 4 5 6 7 8 9c = [] def badsort(l): v = 0 m = len(l) while v c.append(min(l)) l.remove(min ...
- python index函数时间复杂度_初学python之以时间复杂度去理解列表常见使用方法
列表list,一个有序的队列 列表内的个体为元素,由若干个元素按照顺序进行排列,列表是可变化的,也就是说可以增删 list定义 常用的列表定义方式: 使用[] 或者 a = list() 取数列表可以 ...
- python类高级用法_十.python面向对象高级用法
1.反射 1.1 什么是反射 反射的概念是由Smith在1982年首次提出的,主要是指程序可以访问.检测和修改它本身状态或行为的一种能力(自省).这一概念的提出很快引发了计算机科学领域关于应用反射性的 ...
- python垃圾回收离职_详细解说python垃圾回收机制
不同于C/C++,像Python这样的语言是不需要程序员写代码来管理内存的,它的GC(Garbage Collection)机制 实现了自动内存管理.GC做的事情就是解放程序员的双手,找出内存中不用的 ...
- python培训出来的有公司要吗-参加Python培训到底需要学什么?好程序员
原标题:参加Python培训到底需要学什么?好程序员 参加Python培训到底需要学什么?好程序员,参加Python培训到底需要学什么?在选择靠谱的北京Python工程师培训之前,你自己也要对Pyth ...
最新文章
- 特斯拉再出车祸,两死一伤,这次是Model S
- C++流的streambuf详解及TCP流的实现
- python怎么捕获mysql报错
- SSD 通俗易懂介绍
- [GO语言基础] 三.变量声明、数据类型、标识符及编程练习12题
- bootstraptable控制分页_bootstrap-table后端分页功能完整实例
- 谷歌浏览器该扩展程序未列在Chrome网上应用店中解决方法
- Javaweb之session创建销毁问题
- 基于JAVA+SpringBoot+Mybatis+MYSQL的网上商城系统
- 计算机流水线作业员做什么,电子厂普通作业员的工作流程是什么
- transferwise怎么提现_收款工具transfer wise介绍(多币种、可收CJ联盟)
- 【语音处理】基于matlab GUI语音原始信号+变速信号时域频域分析(带面板)【含Matlab源码 294期】
- 勒索病毒在线解密网站汇总
- BOM有效日期的设置
- php向redis list一次性lpush多个值
- nginx: [emerg] events directive is not allowed here in /opt/myapi/nginx.conf:XX
- Anaconda3\Scripts\activate.bat 不是内部或外部命令,也不是可运行的程序的问题处理方法
- jsch jar包连接不上ssh报Algorithm negotiation fail 错误
- LFS 与 BLFS 总体解读
- python拼图游戏代码的理解_Python编写的数字拼图游戏(含爬山算法人机对战功能)...
热门文章
- 【面试题】HashMap 面试 21 问
- docker安装软件(vim,service)
- mvn使用assembly打包所有的moudle为一个tgz文件
- hive-04-Hive函数大全
- DNS 反向解析出错 Error in named configuration: zone centos.vbird/IN: loaded serial 2011080401
- MyBatis-Plus: 谨慎入坑
- SpringBoot 优雅的配置拦截器方式
- 面试中被问到HashMap的结构,1.7和1.8有哪些区别?这篇做深入分析!
- SQL2008数据类型
- 虚拟化+云服务器,虚拟化+云服务器