求翻译这段python代码逻辑
这个很好理解,这个算法是这样的,先将第一个数设置为最大或最少(big or small),再for 循环后面的元素,如果比第一个大或小,就将新的值赋值给big or small 变量。再返回big or small 变量。
■网友
当调用lessthan时,if test(arg, res)就等于if arg \u0026lt; res:反之亦然。*args是一列数字,取出第一个(args),然后跟剩余全部(args)依次比较。可以把test这个名字改为compair(或cmp),还有grtrthan的命名也不直观,还是写全好。
■网友
求数组最大值最小值题主应该会吧,这里只不过把比较运算符抽象成函数从参数传进来了而已。
■网友
评论区有同学对min的逻辑有疑问,这里统一回复一下。我说的意思是这个:假设有一个list,L有一个compare function,C那么在任意时候,下面的式子成立:min(L, cmp=C) == sorted(L, cmp=C)max(L, cmp=C) == sorted(L, cmp=C)也就是说,不管排序的函数是啥,min返回的等于排序后的第一个,max返回的等于排序后的最后一个。C是啥根本不重要。@废话多 @李颉 ---这段code居然是从Learning Python出来的,真是坑人啊。http://pclib.github.io/safari/program/learning-python/Text/ch18s03.htmlStackOverflow还有人跟你问一样的问题。Understanding maxmin function1. 简单看了一下,这一节主要是在讲参数传递的问题,怎么处理不定长参数列表。你重点看*args就好了。熟悉一下func(a, b, c, d)的调用是怎么对应到def func(x, *args)的定义的。2. 至于这个minmax,它的逻辑是错的,一般来说minmax应该同时返回最小和最大的两个值。而它明明实现的是一个min,非要给自己取名为minmax。坑。另外前面的章节没有讲Python的function作为参数传递的事情吗?没有讲的话这儿怎么突然来了个高阶function。这书都第五版了不至于吧。(高阶function其实就是普通的function,只是它的参数里面有别的function,或者返回值是别的function)那么minmax应该怎么做呢?def minmax(test,*args): min = max = args for arg in args: if test(arg, min): min = arg if test(max, arg): max = arg\t\t\t return min, maxdef lessthan(x,y):return x\u0026lt;ydef grtrthan(x,y):return x\u0026gt;yif __name__ == \u0026#39;__main__\u0026#39;: print(minmax(lessthan,4,2,1,5,6,3)) print(minmax(grtrthan,4,2,1,5,6,3))3. 为什么明明是min函数,还能返回最大的呢?这里面对min的理解有误,从逻辑上讲,min不是返回最小的那个,而是返回排序完成之后的序列的第一个。也就是说:min返回sorted(a, b, c)max返回sorted(a, b, c)所以具体的返回值取决于你怎么排序。当你从小到大排序的时候(lessthan),第一个是最小的,min返回的是第一个,所以返回的是最小的。当你从大到小排序的时候(grtrthan),第一个是最大的,min返回的是第一个,所以返回的是最大的。你也可以采用其它方式排序,总之min返回的是排序之后序列的第一个值。当然现实中没有人会去先排序再取第一个,那样太慢,并且也不能处理generator。但是逻辑是这么个逻辑。max同理。4. 示例代码槽点太多了,你要关注在当前的知识点上(*args),不然会跑偏的。
■网友
【求翻译这段python代码逻辑】 我觉得不好理解的地方在于*args, 这个其实是一个tuple, 拿你的例子来说:def minmax(test,*args):这个函数的参数是两个位置参数, 第一个参数为一个函数, 第二个参数为一个tuple
当我们调用这个函数的时候:minmax(lessthan,4,2,1,5,6,3)
推荐阅读
- 怎样成为一名合格的Python程序员?
- python 爬虫,咋获得输入验证码之后的搜索结果
- python的html5lib这个库咋使用啊我在网上也没有找到相关文档
- 零基础入门学习啥语言好
- Python3.4和3.5区别大么
- python 中 def_():...... return _有啥作用
- 求大神帮我破解这段数字密码794497,2937959529,9999728,4392
- 新互联网网站用Java还靠谱么对比Php,Python,Ruby的话
- 30岁男,创业失败转行学python,是否很晚?也不好找工作?
- Python 的开发速度比 C#.net 或 Vb.net 更快吗?
