Python核心编程第二版 第十一章课后答案

11-3. 
函数。在这个练习中,我们将实现max()和min()内建函数。 
(a)写分别带两个元素返回一个较大和较小元素,简单的max2()和min2()函数。他们应该可以用任意的Python对象运作。举例来说,max2(4,8)和min2(4,8)会各自每次返回8和4。 
(b)创建使用了在a部分中的解来重构max()和min()的新函数my_max()和my_min()。这些函数分别返回非空队列中一个最大和最小值。他们也能带一个参数集合作为输入。用数字和字符串来测试你的解。 

from operator import lt

def max2(num1,num2):
    ele = lt(num1,num2)
    if ele == True:
        return num2
    else:
        return num1

def min2(num1,num2):
    ele = lt(num1,num2)
    if ele == True:
        return num1
    else:
        return num2
def my_max(l):
    eleList = l
    for i in range(len(eleList)-1):
        eleList[0] = max2(eleList[0],eleList[i+1])
    return eleList[0]

def my_min(l):
    eleList = l
    for i in range(len(eleList)-1):
        eleList[0] = min2(eleList[0],eleList[i+1])
    return eleList[0]

 

11–6. 变长参数。下一个称为printf()的函数。有一个值参数,格式字符串。剩下的就是根据格式化字符串上的值,要显示在标准输出上的可变参数,格式化字符串中的值允许特别的字符串格式操作指示符,如%d, %f, etc。提示:解是很琐碎的----无需实现字符串操作符功能性,但你需要显示用字符串格式化操作(%)

def printf(fmt,*var):  
    print (fmt % var)  

 

11–10.用filter()进行函数式编程。在unix 文件系统中,在每个文件夹或者目录中都有两个特别的文件:'.'表示现在的目录,'..'表示父目录。给出上面的知识,看下os.listdir()函数的文档并描述这段代码做了什么:files = filter(lambda x: x and x[0] != '.', os. listdir(folder)) 

将文件过滤出来。

 

11–17.定义 
(a) 描述偏函数应用和currying 之间的区别。 
(b) 偏函数应用和闭包之间有什么区别? 
(c) 最后,迭代器和生成器是怎么区别开的? 

我理解,偏函数就是匿名函数。

匿名函数:没有函数名称的函数;

闭包:一个可以使用另外一个函数作用域中的变量的函数,函数调用返回后一个没有释放资源的栈区;

迭代器和生成器类比的话,赌场发牌的荷官算是一个比较接近的例子。
本来你需要自己去处理一堆牌(一个 collection),现在你有了这个对象,只要不断问他要“下一张”,他要是有自然会给你,没有就结束(StopIteration)。

posted @ 2017-09-07 14:34  闪电旅途  阅读(738)  评论(0编辑  收藏  举报