SICP_Python版本第二章:序列作为约定界面
2016-07-17 18:59
302 查看
利用reduce,map,filter,[expressionforinsiftest(s)]可以进行模块化的设计,大大减少了编程的负担
比如下面,一行代码就写出fib数列的前n项,然后再过滤求和。
def sum_even_fibs(n): s = reduce(lambda x,y:x+[x[-1]+x[-2]],[[1,1]]+[0]*(n-2)) return sum([x for x in s if not x%2])
习题2.34计算多项式
def horner_eval(x,cofficients): return reduce(lambda y,c:y*x+c,cofficients[::-1])
习题2.36构造一个accumulate_n过程,用来处理序列的序列 。
def accumulate_n(f,init,sequence): return [reduce(f,[subs[i] for subs in sequence]) for i in range(len(sequence[0]))]
习题2.37:几种矩阵运算的实现。
def dot_product(v,w): return sum([v[i]*w[i] for i in range(len(v))]) def maxtrix_vector(m,v): return [reduce(lambda x,y:x+y,[m[i][j]*v[j] for j in range(len(v))]) for i in range(len(m))] def maxtrix_matrix(m,n): r = transponse(n) return [maxtrix_vector(r,m[i]) for i in range(len(m))] def transponse(m): return [[m[i][j] for i in range(len(m))] for j in range(len(m[0]))] m = [[1,2,3,4],[4,5,6,6],[6,7,8,9]] v = [[1],[2],[3],[4]] print(maxtrix_matrix(m,v)) #print(transponse(m))
习题2.38:应该满足的条件是f(x,y)=f(y,x)
相关文章推荐
- Python基本语法初试
- python编辑器
- python学习——struct
- caffe的python接口学习(2):生成solver文件
- 获取网页中的视频下载地址(利用抓包)
- python学习——base64
- Python学习笔记12:Python模块
- python学习——collections
- Python: 渐进猜数字游戏 <3> 基本输入输出
- python中Scikit-Learn机器学习模块
- python学习-递归
- python学习——datetime
- python内置函数 3
- Python 小甲鱼教程 Easygui 篇
- caffe的python接口学习(1):生成配置文件
- Python环境配置
- Python遇到的小问题与解决方法,时时更新!
- Python学习笔记(2)—搜索路径
- Python *** 爬下糗事百科数据
- Python学习笔记(1)—文件操作