python中lambda函数 list comprehension 和 zip函数使用指南


Posted in Python onSeptember 28, 2014

lambda 函数

Python 支持一种有趣的语法,它允许你快速定义单行的最小函数。这些叫做 lambda 的函数,是从 Lisp 借用来的,可以用在任何需要函数的地方。

def f(x): return x*2,用lambda函数来替换可以写成:g = lambda x: x*2`g(3)结果是6.(lambda x: x*2)(3)`也是同样的效果。

这是一个 lambda 函数,完成同上面普通函数相同的事情。注意这里的简短的语法:在参数列表周围没有括号,而且忽略了 return 关键字 (隐含存在,因为整个函数只有一行)。而且,该函数没有函数名称,但是可以将它赋值给一个变量进行调用
使用 lambda 函数时甚至不需要将它赋值给一个变量。这可能不是世上最有用的东西,它只是展示了 lambda 函数只是一个内联函数。
总的来说,lambda 函数可以接收任意多个参数 (包括可选参数) 并且返回单个表达式的值。lambda 函数不能包含命令,包含的表达式不能超过一个。不要试图向 lambda 函数中塞入太多的东西;如果你需要更复杂的东西,应该定义一个普通函数,然后想让它多长就多长。 我将它们用在需要封装特殊的、非重用代码上,避免令我的代码充斥着大量单行函数。

列表推导式(list comprehension)

看一段简单代码

testList = [1,2,3,4] 

def mul2(x): 

print x*2 

[mul2(i) for i in testList] 

[mul2(i) for i in testList if i%2==0]

多维数组初始化
multilist = [[0 for col in range(5)] for row in range(3)]

zip 函数

>>> a = [1,2,3] 

>>> b = [4,5,6] 

>>> c = [4,5,6,7,8] 

>>> zipped = zip(a,b) 

[(1, 4), (2, 5), (3, 6)] 

>>> zip(a,c) 

[(1, 4), (2, 5), (3, 6)] 

>>> zip(*zipped) 

[(1, 2, 3), (4, 5, 6)]

学习资源
学以致用

m = [[-1.0, 2.0/c-1, -2.0/c+1, 1.0], 

         [2.0, -3.0/c+1, 3.0/c-2, -1.0], 

         [-1.0, 0.0, 1.0, 0.0], 

         [0.0, 1.0/c, 0.0, 0.0]] 

multiply = lambda x: x*c 

m = [[multiply(m[col][row]) for col in range(4)] for row in range(4)] 

print [[m[col][row] for col in range(4)] for row in range(4)]

它所作的工作:m是一个包含参数c的矩阵,他计算了c*m的结果
想了一下,最后一句改成

print [[multiply(each) for each in row] for row in m]更加pythonic

二 矩阵相乘

学习资源

def matrixMul(A, B): 

res = [[0] * len(B[0]) for i in range(len(A))] for i in range(len(A)): 

    for j in range(len(B[0])): 

        for k in range(len(B)): 

            res[i][j] += A[i][k] * B[k][j] return res 

 def matrixMul2(A, B): 

    return [[sum(a * b for a, b in zip(a, b)) for b in zip(*B)] for a in A] 

  

a = [[1,2], [3,4], [5,6], [7,8]] 

b = [[1,2,3,4], [5,6,7,8]] 

 print matrixMul(a,b) print matrixMul(b,a) print "-"*90

 print matrixMul2(a,b) print matrixMul2(b,a) print "-"*90
Python 相关文章推荐
python中的__init__ 、__new__、__call__小结
Apr 25 Python
Python实现从url中提取域名的几种方法
Sep 26 Python
python根据给定文件返回文件名和扩展名的方法
Mar 27 Python
python threading模块操作多线程介绍
Apr 08 Python
在Python的Django框架中创建和使用模版
Jul 15 Python
Python中将字典转换为XML以及相关的命名空间解析
Oct 15 Python
flask中过滤器的使用详解
Aug 01 Python
用pycharm开发django项目示例代码
Oct 24 Python
Django实现跨域请求过程详解
Jul 25 Python
Python远程开发环境部署与调试过程图解
Dec 09 Python
python输出pdf文档的实例
Feb 13 Python
使用matplotlib的pyplot模块绘图的实现示例
Jul 12 Python
python之wxPython应用实例
Sep 28 #Python
Python实现从url中提取域名的几种方法
Sep 26 #Python
Python实现的一个简单LRU cache
Sep 26 #Python
python网络编程实例简析
Sep 26 #Python
python的re模块应用实例
Sep 26 #Python
python实现自动登录人人网并访问最近来访者实例
Sep 26 #Python
编程语言Python的发展史
Sep 26 #Python
You might like
PHP 判断变量类型实现代码
2009/10/23 PHP
ajax+php打造进度条 readyState各状态
2010/03/20 PHP
PHP 图片文件上传实现代码
2010/12/29 PHP
PHP连接Nginx服务器并解析Nginx日志的方法
2015/08/16 PHP
利用Fix Rss Feeds插件修复WordPress的Feed显示错误
2015/12/19 PHP
非常不错的功能强大代码简单的管理菜单美化版
2008/07/09 Javascript
jQuery中使用了document和window哪些属性和方法小结
2011/09/13 Javascript
node.js中的querystring.parse方法使用说明
2014/12/10 Javascript
NodeJS学习笔记之Connect中间件模块(二)
2015/01/27 NodeJs
jquery通过load获取文件的内容并跳到锚点的方法
2015/01/29 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
javascript 使用for循环时该注意的问题-附问题总结
2015/08/19 Javascript
图解JavaScript中的this关键字
2020/05/28 Javascript
js实现当鼠标移到表格上时显示这一格全部内容的代码
2016/06/12 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
jQuery 插件实现随机自由弹跳气泡样式
2017/01/12 Javascript
Angular中ng-options下拉数据默认值的设定方法
2017/06/21 Javascript
浅谈关于.vue文件中style的scoped属性
2017/08/19 Javascript
对于js垃圾回收机制的理解
2017/09/14 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
2019/02/25 Javascript
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
详解微信小程序工程化探索之webpack实战
2020/04/20 Javascript
JS异步宏队列与微队列原理区别详解
2020/07/02 Javascript
[02:05]2014DOTA2西雅图邀请赛 老队长全明星大猜想谁不服就按进显示器
2014/07/08 DOTA
Python中的下划线详解
2015/06/24 Python
Python中字典和集合学习小结
2017/07/07 Python
完美解决安装完tensorflow后pip无法使用的问题
2018/06/11 Python
基于HTML5 FileSystem API的使用介绍
2013/04/24 HTML / CSS
Puritan’s Pride(普丽普莱)官方网站:美国最大最全的保健品公司之一
2016/10/23 全球购物
extern是什么意思
2016/03/10 面试题
食品安全承诺书范文
2014/08/29 职场文书
司法局群众路线教育实践活动开展情况总结
2014/10/25 职场文书
2015年学校教育教学工作总结
2015/04/22 职场文书
2015年语文教学工作总结
2015/05/25 职场文书
交通安全学习心得体会
2016/01/18 职场文书
2019同学聚会主持词
2019/05/06 职场文书