详解Python的max、min和sum函数用法

max()、min()、sum()这三个内置函数分别用于计算列表、元组或其他可迭代对象中所有元素最大值、最小值以及所有元素之和,sum()只支持数值型元素的序列或可迭代对象,max()和min()则要求序列或可迭代对象中的元素之间可比较大小。下面的代码首先使用列表推导式生成包含10个随机数的列表,然后分别计算该列表的最大值、最小值和所有元素之和。

>>> from random import randint

>>> a = [randint(1,100) for i in range(10)] #包含10个[1,100]之间随机数的列表

>>> print(max(a), min(a), sum(a)) #最大值、最小值、所有元素之和

很显然,如果需要计算该列表中所有元素的平均值,可以直接使用下面的方法:

>>> sum(a) / len(a)

函数max()和min()还支持default参数和key参数,其中default参数用来指定可迭代对象为空时默认返回的最大值或最小值,而key参数用来指定比较大小的依据或规则。函数sum()还支持start参数,用来控制求和的初始值。

>>> max(['2', '111']) #不指定排序规则

'2'

>>> max(['2', '111'], key=len) #返回最长的字符串

'111'

>>> print(max([], default=None)) #对空列表求最大值,返回空值None

None

>>> sum(range(1, 11)) #sum()函数的start参数默认为0

55

>>> sum(range(1, 11), 5) #指定start参数为5,等价于5+sum(range(1,11))

60

>>> sum([[1, 2], [3], [4]], []) #这个操作占用空间较大,慎用

[1, 2, 3, 4]

>>> sum(2**i for i in range(200)) #等比数列前n项的和,1+2+4+8+...+2^199

1606938044258990275541962092341162602522202993782792835301375

>>> int('1'*200, 2) #等价于上一行代码,但速度快很多

1606938044258990275541962092341162602522202993782792835301375

>>> int('1'*200, 7) #比值q为2-36之间的整数时,都可以这样做

1743639715219059529169816601969468943303198091695038943325023347339187627904043708629063769151560675048844208042091052362343863390613931864691792377889969422439576020000

>>> sum(range(101)) #101个人开会,互相握手次数

5050

>>> 101 * 100 / 2 #每个人与其他所有握手,除以2是避免重复握手

5050.0

原文发布于微信公众号 - Python小屋(Python_xiaowu)

原文发表时间:2016-12-13

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏武培轩的专栏

Leetcode#561. Array Partition I(数组拆分 I)

给定长度为 2n 的数组, 你的任务是将这些数分成 n 对, 例如 (a1, b1), (a2, b2), ..., (an, bn) ,使得从1 到 n 的 ...

20820
来自专栏吾爱乐享

java之学习Random类的概述和注意事项

11330
来自专栏深度学习之tensorflow实战篇

python中list、array、matrix之间的基本区别

python科学计算包的基础是numpy, 里面的array类型经常遇到. 一开始可能把这个array和python内建的列表(list)混淆, 这里简单总结一...

928120
来自专栏书山有路勤为径

同字符词语分组

已知一组字符串,将所有anagram(由颠倒字母顺序而构成的字)放到一起输出。 例如:["eat", "tea", "tan", "ate", "nat", ...

9410
来自专栏苦逼的码农

【漫画】不要再问我快速排序了

一禅:归并排序是一种基于分治思想的排序,处理的时候可以采取递归的方式来处理子问题。我弄个例子吧,好理解点。例如对于这个数组arr[] = { 4,1,3,2,7...

13020
来自专栏数据结构与算法

24:单词的长度

24:单词的长度 总时间限制: 1000ms 内存限制: 65536kB描述 输入一行单词序列,相邻单词之间由1个或多个空格间隔,请对应地计算各个单词的长度。...

34050
来自专栏章鱼的慢慢技术路

用数组解决问题(一)

34540
来自专栏行者常至

002.python科学计算库numpy(下)

版权声明:本文为博主原创文章,允许转载,请标明出处。 https://blog.csdn.net/qwdafedv/article/deta...

10410
来自专栏武培轩的专栏

Leetcode#53.Maximum Subarray(最大子序和)

题目描述 给定一个序列(至少含有 1 个数),从该序列中寻找一个连续的子序列,使得子序列的和最大。 例如,给定序列 [-2,1,-3,4,-1,2,1,-5,4...

35250
来自专栏测试开发架构之路

C++之类和对象的使用(一)

  对象的初始化 在声明类时直接对数据成员初始化是错误的!下面的例子时错误的!! class Time{ hour =0; minitu=0; sec=0; }...

30260

扫码关注云+社区

领取腾讯云代金券