起因是看到一道面试题

“统计字符串中出现次数最多的字符,并返回出现次数”

问题很简单,刚开始没思路,只想到了循环统计,但是觉得太蠢了,直到我发现了max()的key用法,果然还是我之前学的太浅了~

s="zxcvbnmasdaasdafa"
max_s = max(s,key=s.count) # 返回出现次数最多的字符
s.count(max_s) # 返回次数

相关知识点:

max(iterable, *[, key, default])

官方文档是这么写,写的还是很详细:

返回可迭代对象中最大的元素,或者返回两个及以上实参中最大的。

如果只提供了一个位置参数,它必须是非空 iterable,返回可迭代对象中最大的元素;如果提供了两个及以上的位置参数,则返回最大的位置参数。

有两个可选只能用关键字的实参。key 实参指定排序函数用的参数,如传给 list.sort() 的。default 实参是当可迭代对象为空时返回的值。如果可迭代对象为空,并且没有给 default ,则会触发 ValueError。

如果有多个最大元素,则此函数将返回第一个找到的。这和其他稳定排序工具如 sorted(iterable, key=keyfunc, reverse=True)[0] 和 heapq.nlargest(1, iterable, key=keyfunc) 保持一致。

3.4 新版功能: keyword-only 实参 default 。

在 3.8 版更改: key 可以为 None。

max(s,key=s.count)

key接受一个函数对象,引用s.count函数,s中的每一个字符均会传入s.count(sub, start= 0,end=len(string))函数,并对所有字符的计算结果进行max()计算。



P.S.这种解法有个不太好的地方,如果有两个字符出现的次数一样,仅能返回第一个找到的字符

s = "asdf zxcva12q awww"

只会返回"a",但是其实"w"和"a"出现的次数一样,都是3

还有另一种解法

利用colletions模块

from collections import Counter
c = Counter(s)
c.most_common() # 输出为 [('a', 3), ('w', 3), (' ', 2), ('s', 1), ('d', 1), ('f', 1), ('z', 1), ('x', 1), ('c', 1), ('v', 1), ('1', 1), ('2', 1),('q', 1)]

结果是按出现次数顺序排列的列表

具体就不说了,colletions太强大了,说起来还是很多点的,有机会再细看

python max()用法的更多相关文章

  1. Python高级用法

    Python高级用法 三元表达式 x = 10 y = 20 print(x if x > y else y) x = 100 y = 20 print(x if x > y else y ...

  2. Python高级用法总结

    Python很棒,它有很多高级用法值得细细思索,学习使用.本文将根据日常使用,总结介绍Python的一组高级特性,包括:列表推导式.迭代器和生成器.装饰器. 列表推导(list comprehensi ...

  3. python argparse用法总结

    转:python argparse用法总结 1. argparse介绍 argparse是python的一个命令行解析包,非常适合用来编写可读性非常好的程序. 2. 基本用法 prog.py是我在li ...

  4. Anaconda下载及安装及查看安装的Python库用法

    Anaconda下载及安装及查看安装的Python库用法 Anaconda 是一个用于科学计算的 Python 发行版,提供了包管理与环境管理的功能.Anaconda 利用 conda 来进行 pac ...

  5. python enumerate用法总结【转】

    enumerate()说明 enumerate()是python的内置函数 enumerate在字典上是枚举.列举的意思 对于一个可迭代的(iterable)/可遍历的对象(如列表.字符串),enum ...

  6. Python max() 方法

    描述 Python max() 方法返回字符串中最大的字母(26个字母中最大的是Z). 语法 max() 方法语法: max(S) 参数 S -- 字符串. 返回值 返回字符串中最大的字母. 实例 以 ...

  7. 内置函数:max 用法

    内置函数——max Python max内置函数 max(iterable, *[, key, default]) max(arg1, arg2, *args[, key]) Return the l ...

  8. Python import用法以及与from...import的区别

    Python import用法以及与from...import的区别 在python用import或者from...import来导入相应的模块.模块其实就是一些函数和类的集合文件,它能实现一些相应的 ...

  9. 预备知识-python核心用法常用数据分析库(上)

    1.预备知识-python核心用法常用数据分析库(上) 目录 1.预备知识-python核心用法常用数据分析库(上) 概述 实验环境 任务一:环境安装与配置 [实验目标] [实验步骤] 任务二:Pan ...

  10. Python max()方法扩展:求字典中值最大的键

    重要的应该写在前面[捂脸]   场景一:仅求最大值对应的键,代码如下: >>> dic = {'A':4, 'B':2, 'C':3} >>> max_key = ...

随机推荐

  1. Software_programming_EnterpriseArch_ServiceWithSingleTonFactory

    19:50:31 <UML 模式和应用> P322 系统需要支持多种第三方外部服务,例如费用计算,授权服务,库存系统,都具有不同的API, 而且还无法改变. 解决方案之一: 使用 单例模式 ...

  2. class的知识点

    1. 在class类中,定义方法在constructor里面和外面的区别?? 定义在constructor里面是原型方法,定义在外边是实例方法.  里面的原型方法在new的时候会改变this指向 2. ...

  3. python 在路径下创建文件/文本文件 没有路径自动创建

    1.一般在执行文件的同级目录下创建一个文本文件: file = open("1.txt", "w", encoding="utf8") # ...

  4. uni-app学习笔记之----目录认识

    新建了一个项目之后,先简单认识目录结构 1.pages  存放项目的所有页面 2.static  存放静态资源 3.unpackage  存放项目打包之后生成的文件 4.App.vue   项目的根组 ...

  5. 模拟ATM系统 —— 用户存款、取款、转账、修改密码和销户功能

    接着上一篇: 5.用户存款功能 分析: *存款就是拿到当前账户对象 *然后让用户输入存款的金额 *调用账户对象的setMoney方法将账户余额修改成存钱后的余额 *存款后需要查询当前账户信息,确认是否 ...

  6. IO学习笔记6

    2.3 多路复用 但是NIO仍有它的缺陷,因为服务端和客户端都在一个线程中,主线程遍历客户端集合去每一个客户端都问一遍:你有没有数据,这样的话,如果有10K个客户端,只有最后一个客户端才收到了信息,但 ...

  7. (0319) uvm 库的安装编译:

    https://mp.weixin.qq.com/s/jCSp89UYsEZGRU2BN5IloA

  8. 直播平台制作,Android 悬浮窗延时5秒返回APP问题

    直播平台制作,Android 悬浮窗延时5秒返回APP问题 案例需求分析:在APP界面,点击Home键后,APP退出后台,同时会打开一个悬浮窗,当用户点击悬浮窗上的按键会返回APP. 出现的问题是:点 ...

  9. SpringCloudEureka上篇

    SpringCloudEureka上篇 本文学习自<<重新定义SpringCloud>> Eureka简介 Eureka是Netflix公司开源的一款服务发现组件,该组件提供的 ...

  10. springboot gradle 加速问题

    初始化项目使用阿里云 seriver url : https://start.spring.io 直接修改为: https://start.aliyun.com 关键的gradle 修改安装包地址 g ...