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中列表元素转为数字的方法分析
Jun 14 Python
python贪婪匹配以及多行匹配的实例讲解
Apr 19 Python
基于pandas数据样本行列选取的方法
Apr 20 Python
python如何爬取个性签名
Jun 19 Python
Python实现多级目录压缩与解压文件的方法
Sep 01 Python
python利用selenium进行浏览器爬虫
Apr 25 Python
对PyQt5中树结构的实现方法详解
Jun 17 Python
python实现自动化上线脚本的示例
Jul 01 Python
python高斯分布概率密度函数的使用详解
Jul 10 Python
python 实现在shell窗口中编写print不向屏幕输出
Feb 19 Python
Python可以用来做什么
Nov 23 Python
Pycharm 如何一键加引号的方法步骤
Feb 05 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程序员的技术瓶颈分析
2011/07/17 PHP
使用Yii2实现主从数据库设置
2016/11/20 PHP
ThinkPHP实现图片上传操作的方法详解
2017/05/08 PHP
PHP实现打包zip并下载功能
2018/06/12 PHP
javascript 添加和移除函数的通用方法
2009/10/20 Javascript
JavaScript的document对象和window对象详解
2010/12/30 Javascript
js 与 php 通过json数据进行通讯示例
2014/03/26 Javascript
jquery等待效果示例
2014/05/01 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
JavaScript中字符串(string)转json的2种方法
2015/06/25 Javascript
JavaScript:Array类型全面解析
2016/05/19 Javascript
手机端 HTML5使用photoswipe.js仿微信朋友圈图片放大效果
2016/08/25 Javascript
jQuery插件ajaxFileUpload使用实例解析
2016/10/19 Javascript
浅谈React 属性和状态的一些总结
2016/11/21 Javascript
js生成随机数方法和实例
2017/01/17 Javascript
jQuery实现一个简单的验证码功能
2017/06/26 jQuery
AngularJS使用ui-route实现多层嵌套路由的示例
2018/01/10 Javascript
Spring Boot/VUE中路由传递参数的实现代码
2018/03/02 Javascript
vue中对象数组去重的实现
2020/02/06 Javascript
[02:49]DOTA2完美大师赛首日观众采访
2017/11/23 DOTA
[00:34]TI7不朽珍藏III——纯金地穴编织者饰品展示
2017/07/15 DOTA
[01:30:55]VG vs Mineski Supermajor 败者组 BO3 第三场 6.6
2018/06/07 DOTA
[55:54]FNATIC vs EG 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
浅谈Python中用datetime包进行对时间的一些操作
2016/06/23 Python
Python面向对象class类属性及子类用法分析
2018/02/02 Python
基于python实现简单日历
2018/07/28 Python
Python 将json序列化后的字符串转换成字典(推荐)
2020/01/06 Python
HTML5 LocalStorage 本地存储刷新值还在
2017/03/10 HTML / CSS
Myprotein亚太地区:欧洲第一在线运动营养品牌
2020/12/20 全球购物
实习生的自我鉴定范文欣赏
2013/11/20 职场文书
公司任命书模板
2014/06/06 职场文书
质量保证书怎么写
2015/02/27 职场文书
中学生清明节演讲稿
2015/03/18 职场文书
药品销售内勤岗位职责
2015/04/13 职场文书
管理失职检讨书
2015/05/05 职场文书
毕业论文答辩开场白和结束语
2015/05/27 职场文书