Python max() 函数
本帖最后由 一个账号 于 2020-3-23 12:10 编辑Python max() 函数
语法
max(iterable, *[, default=obj, key=func]) -> value
max(arg1, arg2, *args, *[, key=func]) -> value
参数
参数有两种传递方式:
1. 传递 1 或多个可迭代对象:如果传递 1 个可迭代对象,比的是可迭代对象里面的值;
如果给的是 多个可迭代对象,比的是每一个迭代器对象。
2. 传递多个字符串或数字:比的是每个字符串或数字。
参数描述
iterable可迭代对象
key自定义处理函数,以 key 的返回结果进行对比
default默认值,只有在传递单个空值时有效
描述
max() 方法用于找出最大的值。
返回值
返回最大的值。
例子
>>> max("awgij34tpqw;rleigj34oit 34joi4 jef ")
'w'
>>> max(3, 5, 7, 2, 1, 1, 99, 5, 8, 7, -54, 3, 12)
99
>>> max("abcdefgh", "abcdefghijklmnopqrst")
'abcdefghijklmnopqrst'
>>> max(, )
>>> max(, , )
>>> max(, , )
>>> max(, , , key=len)
>>> max("")
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
max("")
ValueError: max() arg is an empty sequence
>>> max("", default="abc")
'abc'
>>> max([], default="abc")
'abc'
本帖最后由 永恒的蓝色梦想 于 2020-3-20 08:54 编辑
一种可能的实现
def max(iterable,/,*vars,key=None,default=None):
if vars:
if default is not None:
raise TypeError("Cannot specify a default for max() with multiple positional arguments")
greatest=iterable
flag=key(greatest)
else:
iterator=iter(iterable)
if default is None:
try:
greatest=next(iterator)
except StopIteration:
raise ValueError("max() arg is an empty sequence")
else:
greatest=default
if key is None:
for var in vars:
if var>greatest:
greatest=var
return greatest
else:
flag=key(greatest)
for var in vars:
if (temp:=key(var))>flag:
flag=temp
greatest=var
return greatest
页:
[1]