在公司无聊的时候看了前辈写的python代码,突然发现一个比较好玩的python表达式:

lambda x,y:x+y

咋一看,这个应该类似方法之类的,上网查了查,所以特此总结下

lambda:上代码

冒号前边的代表参数
冒号后边的代表表达式
返回值类型跟参数有关

 >>> lambda x:x
<function <lambda> at 0x01B50730>#如果不作传递的话就是这样
>>>
>>>
>>> la=lambda x:x+y
>>> la(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <lambda>
NameError: global name 'y' is not defined
>>>
>>>
>>> la=lambda x,y:x+y
>>>
>>>
>>> la(1,2)
3

**返回值:

 >>> la(1,range(5))#列表
[0, 1, 2, 3, 4]
>>>
>>>
>>> la(1,(1,2))#元组
(1, 2)
>>> la(1,'xyz')#字符串
'xyz'

**从这里可以看得出来,lambda还是挺便捷的。如果是复杂的表达适合,个人觉的还是不要使用lambda

filter:

第一个参数:方法
第二个参数:序列
对序列中的每一个元素用方法迭代病生成一个列表

 >>> def fil(x):
... return x % 2 != 0 and x % 3 != 0
...
>>>
>>>
>>> filter(fil,range(1,100))
[1, 5, 7, 11, 13, 17, 19, 23, 25, 29, 31, 35, 37, 41, 43, 47, 49, 53, 55, 59, 61
, 65, 67, 71, 73, 77, 79, 83, 85, 89, 91, 95, 97]
>>>

**如果第一个参数传入的是None的话,则只遍历序列里边的值,比如:

 >>> filter(None,range(1,100))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22,
23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42,
43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62,
63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82,
83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
>>>

reduce

第一个参数:方法名
第二个参数:序列
第三个参数:备用的,不传的话为0
实在不明白为什么取这个名字,请忽略我的抱怨,上代码看看
返回值跟参数有关

 >>> def add(x,y):
... print 'x=' + str(x), 'y=' + str(y)
... return x + y
...
>>> reduce(add,range(10))
x=0 y=1#第3个参数不传的时候,可以看出,x的值是给定的值,之后就是叠加后的值
x=1 y=2
x=3 y=3
x=6 y=4
x=10 y=5
x=15 y=6
x=21 y=7
x=28 y=8
x=36 y=9
45

**带第三个参数的时候

 >>> reduce(add,range(10),20)
x=20 y=0#从这里就可以看出,reduce是从第三个参数给定值然后迭代的
x=20 y=1
x=21 y=2
x=23 y=3
x=26 y=4
x=30 y=5
x=35 y=6
x=41 y=7
x=48 y=8
x=56 y=9
65
>>> reduce(add,'xyz')
x=x y=y
x=xy y=z
'xyz'
>>> reduce(add,'xyz',10)
x=10 y=x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in add
TypeError: unsupported operand type(s) for +: 'int' and 'str'
>>>
>>>
>>> reduce(add,'xyz','')
x=10 y=x
x=10x y=y
x=10xy y=z
'10xyz'
>>>

map

第一个参数:方法名
第二个参数:序列,也可以是多个序列(前提是方法必须支持多个参数)
返回值是个列表

 >>> map(add,range(10))#从这里可以看出和reduce读取参数的方式还是不同的。其实也差不多,因为reduce第三个参数有初始化
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: add() takes exactly 2 arguments (1 given)
>>>
>>>
>>> map(add,range(10),range(10))
x=0 y=0
x=1 y=1
x=2 y=2
x=3 y=3
x=4 y=4
x=5 y=5
x=6 y=6
x=7 y=7
x=8 y=8
x=9 y=9
[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
>>>
>>> map(ret,'x')
x=x
['x']
>>>
>>>
>>> map(ret,(1,2))
x=1
x=2
[1, 2]
>>>
>>>
>>> map(ret,[1,2])
x=1
x=2
[1, 2]
>>>

如果map中的方法只有一个参数,则只能传入一个序列;如果有多个,则传入多个序列。再对每个序列中的值迭代,这个就比较奇怪了,也不知在编码过程中有什么用处

总的来说,我在python的编码过程中很少用到这几个方法,估计面试的时候会用到

generated by haroopad

Python无聊的总结的更多相关文章

  1. Python的高级特性10:无聊的@property

    @property装饰器其实有点无聊,单独拿出来作为一个知识点其实没必要,尽管它可以将方法变成属性,让get和set方法更好用,但是,它破坏了python的简洁(不是代码的简洁而是指语法上). 下面来 ...

  2. 一个无聊的python + opencv 示例

    opencv不用多说,先推荐一个给力的教程: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_tutor ...

  3. python 冒泡和快排,不多说【无聊】

    #-*-coding:utf8-*- import random a=[] b=[] def init_array(): for i in range(10000): v = random.randi ...

  4. Python练习-sys.argv的无聊用法

    代码如下: # 编辑者:闫龙 #将三次登陆锁定的作业改为: # python login.py -u alex -p 123456 输入的形式 # (-u,-p是固定的,分别代表用户名和密码) imp ...

  5. 深浅拷贝--python(预习中随手写的。因为当时很无聊。。。)

    需要知识准备,pyhton基本常识,python的小数据池概念. 深浅拷贝操作需要模块导入:import copy emmm,对于python中的两种数据类型来说. 1.数字,字符串 2.列表,元祖, ...

  6. 上班无聊,自己用python做个小游戏来打发时间

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取t.cn ...

  7. 同事上班时间无聊,用python敲出贪吃蛇游戏打发时间

    自从学会啦python,再也不用担心上班时间老板发现我打游戏啦 贪吃蛇代码: 还有不懂的(https://www.ixigua.com/i6808019824560570888/)这里有视频教程. 如 ...

  8. 闲着无聊 一个python的,三级菜单。装逼版。

    menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {}, '汽车之家': ...

  9. python实现网络爬虫下载天涯论坛帖子

    最近发现天涯论坛是一个挺有意思的网站,有各种乱七八糟的帖子足以填补无聊时候的空虚感,但是相当不爽的一件事就是天涯的分页模式下想连贯的把楼主的内容看完实在是太心酸了,一个999页的帖子,百分之九十都是无 ...

随机推荐

  1. 【九度OJ】题目1054:字符串内排序

    题目描述: 输入一个字符串,长度小于等于200,然后将输出按字符顺序升序排序后的字符串. 输入: 测试数据有多组,输入字符串. 输出: 对于每组输入,输出处理后的结果. 样例输入: bacd 样例输出 ...

  2. Swift语法简介(一)

    或许网络上有很多成型的介绍,我只想写下来留给自己.欢迎批评.开撸! 1.第一个程序,Hello,world!古人云,学会了Hello,world!这门语言你就掌握了一半了. print("H ...

  3. 那年有关 return ; 的一切

    现在只知道在dev C++里面声明了函数的返回类型不为void就不能写return; ,但是如果返回值为void就可以写return; ,而且如你所愿.

  4. C#交错数组

    交错数组本质上是一维数组只不过这个一维数组里的元素都是数组.因为该一维数组里面的元素可以是任何大小的数组所以定义时只能以这样的格式定义 ][]; 定义完后必须对该数组进行初始化后方可进行赋值等操作否则 ...

  5. MOTION-MATCHING IN UBISOFT’S FOR HONOR翻译

    http://www.gameanim.com/2016/05/03/motion-matching-ubisofts-honor/ Introducing For Honor with a vide ...

  6. ruby中数组的常用方法----例子

    #初始化 a = Array.new p a #=>[] a = Array.new(5) p a #=>[nil, nil, nil, nil, nil] a = Array.new(5 ...

  7. toad的基本操作

    1.把鼠标停在sql所在行,然后ctrl+Enter直接执行当前sql. 2.解决Toad对中文显示乱码问题(如果数据库所在主机的NLS_LANG是AMERICAN_AMERICA.WE8ISO885 ...

  8. Await, and UI, and deadlocks! Oh my!

    It’s been awesome seeing the level of interest developers have had for the Async CTP and how much us ...

  9. springMVC中一个controller多个方法

    web.xml文件: <?xml version="1.0" encoding="UTF-8"?><web-app version=" ...

  10. 走读openwrt的shell的总结【转】

    原文:http://blog.chinaunix.net/uid-26598889-id-3060543.html ". /etc/diag.sh" 就是将/etc/diag.sh ...