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中处理异常的教程
May 24 Python
Python利用itchat对微信中好友数据实现简单分析的方法
Nov 21 Python
[原创]教女朋友学Python(一)运行环境搭建
Nov 29 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
Apr 08 Python
python如何发布自已pip项目的方法步骤
Oct 09 Python
记录Python脚本的运行日志的方法
Jun 05 Python
python装饰器代替set get方法实例
Dec 19 Python
Django User 模块之 AbstractUser 扩展详解
Mar 11 Python
Python unittest单元测试框架实现参数化
Apr 29 Python
基于python计算并显示日间、星期客流高峰
May 07 Python
安装Anaconda3及使用Jupyter的方法
Oct 27 Python
python3 删除所有自定义变量的操作
Apr 08 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 session有效期session.gc_maxlifetime
2011/04/20 PHP
PHP 中提示undefined index如何解决(多种方法)
2016/03/16 PHP
JS获取后台Cookies值的小例子
2013/03/04 Javascript
javascript中parentNode,childNodes,children的应用详解
2013/12/17 Javascript
js根据鼠标移动速度背景图片自动旋转的方法
2015/02/28 Javascript
ECMAScript 5严格模式(Strict Mode)介绍
2015/03/02 Javascript
javascript实现九宫格相加数值相等
2020/05/28 Javascript
详解nodejs的express如何自动生成项目框架
2017/07/12 NodeJs
深入理解vue.js中$watch的oldvalue与newValue
2017/08/07 Javascript
Vue-Access-Control 前端用户权限控制解决方案
2017/12/01 Javascript
vue :src 文件路径错误问题的解决方法
2018/05/15 Javascript
转换layUI的数据表格中的日期格式方法
2019/09/19 Javascript
微信小程序激励式视频广告组件使用详解
2019/12/06 Javascript
详解vue路由
2020/08/05 Javascript
[03:00]2014DOTA2国际邀请赛 Titan淘汰潸然泪下Ohaiyo专访
2014/07/15 DOTA
Python 的描述符 descriptor详解
2016/02/27 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
python购物车程序简单代码
2018/04/18 Python
利用python脚本如何简化jar操作命令
2019/02/24 Python
Falsk 与 Django 过滤器的使用与区别详解
2019/06/04 Python
python打印直角三角形与等腰三角形实例代码
2019/10/20 Python
对tensorflow中tf.nn.conv1d和layers.conv1d的区别详解
2020/02/11 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
松下电器美国官方商店:Panasonic美国
2016/10/14 全球购物
Missguided美国官网:英国时尚品牌
2018/01/18 全球购物
Spongelle官网:美国的创意护肤洗护品牌
2019/05/15 全球购物
Guess欧洲官网:美国服饰品牌
2019/08/06 全球购物
英国领先的游戏零售商:GAME
2019/09/24 全球购物
酒店总经理工作职责
2013/12/13 职场文书
给校长的建议书500字
2014/05/15 职场文书
质量主管工作职责
2014/09/26 职场文书
2014年社区宣传工作总结
2014/12/02 职场文书
财务部岗位职责范本
2015/04/14 职场文书
2016年乡镇综治宣传月活动总结
2016/03/16 职场文书
基于Python编写一个监控CPU的应用系统
2022/06/25 Python
MySQL事务的隔离级别详情
2022/07/15 MySQL