python闯关4——最大最小
2016-10-24 19:23
211 查看
来自一个python编程挑战网站.整理供大家参考提高。
max(iterable, [, key]) 或者 min(iterable, [, key])
max(arg1, arg2, *args[, key]) 或者 min(arg1, arg2, *args[, key])
返回迭代中的最大(最小)项中或者返回根据所提供参数的最大(最小)值 。
如果有一个参数时,它应该是一个迭代器。返回在迭代器的最大(最小)的项。如果提供两个或更多的参数,返回参数中的最大(最小)的项。
可选的唯一关键字是一个用于从每个列表元素提取一个用于比较的参数的函数。(例如,key=str.lower.lower)
如果有多个值同是最大(最小)的,函数返回所遇到的第一个最大值。
– Python 文档 内建函数
输入: 一个参数作为一个迭代器或两个以上的参数。 一个函数作为可选关键字参数。
输出: “max” 函数输出最大的项 “min” 函数输出最小的项。
范例:
max(3, 2) == 3
min(3, 2) == 2
max([1, 2, 0, 3, 4]) == 4
min(“hello”) == “e”
max(2.2, 5.6, 5.9, key=int) == 5.6
min([[1,2], [3, 4], [9, 0]], key=lambda x: x[1]) == [9, 0]
如何使用: 此任务将帮助你了解一些内置的功能是如何在更精确的水平上工作的。
前提: 所有的测试用例都是正确的并且函数不会引发异常。
输出结果为:
本题目主要学习任意数量参数的编程。
题干
在这个任务中,你应该自己写出PY3中实现的内建函数 min 和 max. 一些内建函数在这里是不能用的:import,eval,exec,globals。 别忘了,你需要在你的代码中实现两个函数。max(iterable, [, key]) 或者 min(iterable, [, key])
max(arg1, arg2, *args[, key]) 或者 min(arg1, arg2, *args[, key])
返回迭代中的最大(最小)项中或者返回根据所提供参数的最大(最小)值 。
如果有一个参数时,它应该是一个迭代器。返回在迭代器的最大(最小)的项。如果提供两个或更多的参数,返回参数中的最大(最小)的项。
可选的唯一关键字是一个用于从每个列表元素提取一个用于比较的参数的函数。(例如,key=str.lower.lower)
如果有多个值同是最大(最小)的,函数返回所遇到的第一个最大值。
– Python 文档 内建函数
输入: 一个参数作为一个迭代器或两个以上的参数。 一个函数作为可选关键字参数。
输出: “max” 函数输出最大的项 “min” 函数输出最小的项。
范例:
max(3, 2) == 3
min(3, 2) == 2
max([1, 2, 0, 3, 4]) == 4
min(“hello”) == “e”
max(2.2, 5.6, 5.9, key=int) == 5.6
min([[1,2], [3, 4], [9, 0]], key=lambda x: x[1]) == [9, 0]
如何使用: 此任务将帮助你了解一些内置的功能是如何在更精确的水平上工作的。
前提: 所有的测试用例都是正确的并且函数不会引发异常。
我的代码
def minSimple(arg1, arg2, key): if key!=None and key(arg1)<key(arg2) or key==None and arg1<arg2: return arg1 return arg2 def min(*args, **kwargs): key=kwargs.get("key", None) # Extracting key if len(args)==1: args=list(args[0]) # Adapting arguments # Comparing arguments, one by one result=args[0] for x in range(1,len(args)): result=minSimple(result,args[x],key) return result def maxSimple(arg1, arg2, key): if key!=None and key(arg2)>key(arg1) or key==None and arg2>arg1: return arg2 return arg1 def max(*args, **kwargs): key=kwargs.get("key", None) # Extracting key if len(args)==1: args=list(args[0]) # Adapting arguments # Comparing arguments, one by one result=args[0] for x in range(1,len(args)): result=maxSimple(result,args[x],key) return result if __name__ == '__main__': #These "asserts" using only for self-checking and not necessary for auto-testing assert max(3, 2) == 3, "Simple case max" assert min(3, 2) == 2, "Simple case min" assert max([1, 2, 0, 3, 4]) == 4, "From a list" assert min("hello") == "e", "From string" assert max(2.2, 5.6, 5.9, key=int) == 5.6, "Two maximal items" assert min([[1, 2], [3, 4], [9, 0]], key=lambda x: x[1]) == [9, 0], "lambda key" assert min(abs(i) for i in range(-10, 10)) == 0
总结
这两个是python中的可变参数。*args表示任何多个无名参数,它是一个tuple;**kwargs表示关键字参数,它是一个dict。并且同时使用*args和**kwargs时,必须*args参数列要在**kwargs前。举个栗子:def foo(*args, **kwargs): print 'args = ', args print 'kwargs = ', kwargs print '---------------------------------------' if __name__ == '__main__': foo(1,2,3,4) foo(a=1,b=2,c=3) foo(1,2,3,4, a=1,b=2,c=3) foo('a', 1, None, a=1, b='2', c=3)
输出结果为:
args = (1, 2, 3, 4) kwargs = {} --------------------------------------- args = () kwargs = {'a': 1, 'c': 3, 'b': 2} --------------------------------------- args = (1, 2, 3, 4) kwargs = {'a': 1, 'c': 3, 'b': 2} --------------------------------------- args = ('a', 1, None) kwargs = {'a': 1, 'c': 3, 'b': '2'} ---------------------------------------
本题目主要学习任意数量参数的编程。
相关文章推荐
- 从一个集合中查找最大最小的N个元素——Python heapq 堆数据结构
- 使用Python scipy linprog 线性规划求最大值或最小值(使用Python学习数学建模笔记)
- Python实现利用最大公约数求三个正整数的最小公倍数示例
- python---函数(返回整型最大/最小值、返回字符串最长的串、函数返回任意的module的帮助文档内容、读取目录下内容、)
- python 最大公约数与最小公倍数
- Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸
- Python中最大最小赋值小技巧(分享)
- n个正整数,联接成一排,组成一个最大(最小)的多位整数 python
- Python实用黑科技——找出最大/最小的n个元素
- python topN 取 最大的N个数 或 最小的N个数
- python 中最大,最小数的问题
- 基于python语言:已知最大公约数与最小公倍数,反求符合条件的两个数
- python 找到最大或最小的N个元素
- python_lintcode_97二叉树的最大深度 _155二叉树的最小深度
- Python: tkinter窗口屏幕居中,设置窗口最大,最小尺寸
- 窥探算法之美妙——寻找数组中最小的K个数&python中巧用最大堆
- 20170213 日志 python 合并 excel oracle 得到最大最小数列
- python spark 求解最大 最小 平均 中位数
- 通过3(2/n)次比较同时找到数组最大和最小值(python)
- python任意多个整数,并输出其中最大值 最小值以及它们的和