|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 zltzlt 于 2020-3-28 13:05 编辑
Python 重构 max() 函数
要求
实现 BIF max()
不能使用 BIF 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([1, 2, 3, 4], [1, 2, 3])
- [1, 2, 3, 4]
- >>> max([1, 2, 3, 4], [1, 2, 3], [5, 6, 7, 8])
- [5, 6, 7, 8]
- >>> max([1, 2, 3, 4, 5], [1, 2, 3], [5, 6, 7, 8])
- [5, 6, 7, 8]
- >>> max([1, 2, 3, 4, 5], [1, 2, 3], [5, 6, 7, 8], key=len)
- [1, 2, 3, 4, 5]
- >>> 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-28 12:14 编辑
- def max(iterable,/,*vars,key=None,default=None):
- if vars:
- if default is None:
- greatest=iterable
-
- else:
- raise TypeError("Cannot specify a default for max() with multiple positional arguments")
- else:
- vars=iter(iterable)
- try:
- greatest=next(vars)
- except StopIteration:
- if default is None:
- raise ValueError("max() arg is an empty sequence")
- else:
- return default
- if key is None:
- for var in vars:
- if var>greatest:
- greatest=var
- else:
- flag=key(greatest)
- for var in vars:
- temp=key(var)
- if temp>flag:
- flag=temp
- greatest=var
- return greatest
复制代码
|
|