Python无聊的总结
在公司无聊的时候看了前辈写的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无聊的总结的更多相关文章
- Python的高级特性10:无聊的@property
@property装饰器其实有点无聊,单独拿出来作为一个知识点其实没必要,尽管它可以将方法变成属性,让get和set方法更好用,但是,它破坏了python的简洁(不是代码的简洁而是指语法上). 下面来 ...
- 一个无聊的python + opencv 示例
opencv不用多说,先推荐一个给力的教程: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_tutor ...
- python 冒泡和快排,不多说【无聊】
#-*-coding:utf8-*- import random a=[] b=[] def init_array(): for i in range(10000): v = random.randi ...
- Python练习-sys.argv的无聊用法
代码如下: # 编辑者:闫龙 #将三次登陆锁定的作业改为: # python login.py -u alex -p 123456 输入的形式 # (-u,-p是固定的,分别代表用户名和密码) imp ...
- 深浅拷贝--python(预习中随手写的。因为当时很无聊。。。)
需要知识准备,pyhton基本常识,python的小数据池概念. 深浅拷贝操作需要模块导入:import copy emmm,对于python中的两种数据类型来说. 1.数字,字符串 2.列表,元祖, ...
- 上班无聊,自己用python做个小游戏来打发时间
前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取t.cn ...
- 同事上班时间无聊,用python敲出贪吃蛇游戏打发时间
自从学会啦python,再也不用担心上班时间老板发现我打游戏啦 贪吃蛇代码: 还有不懂的(https://www.ixigua.com/i6808019824560570888/)这里有视频教程. 如 ...
- 闲着无聊 一个python的,三级菜单。装逼版。
menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {}, '汽车之家': ...
- python实现网络爬虫下载天涯论坛帖子
最近发现天涯论坛是一个挺有意思的网站,有各种乱七八糟的帖子足以填补无聊时候的空虚感,但是相当不爽的一件事就是天涯的分页模式下想连贯的把楼主的内容看完实在是太心酸了,一个999页的帖子,百分之九十都是无 ...
随机推荐
- jboss hello world
http://developers.redhat.com/products/devstudio/get-started/ 1. 下载 Red Hat JBoss Developer studio 2. ...
- gulp 初级教程 会着让道
1.全局安装一遍: $ npm install gulp -g 2.cd 到项目的根目录 (如果跟程序配合,程序先建好程序的话,你可找到放js和css还有images的文件夹.)我当时就在这挡住了,不 ...
- hdu acm 1425 sort(哈希表思想)
sort Time Limit: 6000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submis ...
- 用CSS绘制箭头等三角形图案 [译]
最近重新设计了我的网站,准备添加tooltips提示信息效果.实现很容易,但我想要让提示功能具有三角形的指示图标.当我重新思考想要所设计的每个图标颜色都随心所欲的时候,采用图片那就是一场灾难.幸运的是 ...
- hdu 3065 AC自动机
// hdu 3065 AC自动机 // // 题目大意: // // 给你n个短串,然后给你一个长串,问:各个短串在长串中,出现了多少次 // // 解题思路: // // AC自动机,插入,构建, ...
- iOS开发零基础--Swift教程 字符串的利用
字符串的介绍 字符串在任何的开发中使用都是非常频繁的 OC和Swift中字符串的区别 在OC中字符串类型时NSString,在Swift中字符串类型是String OC中字符串@"" ...
- 从csdn博客搬家过来,请多关照!
之前一直在csdn博客,也写了不少关于java的文章,主要是学习java上的一些问题.想通过这种方式来加深对问题的认知,同时也可以帮助到志同道合的人,一起在编程的道路上共进,共勉.
- 关于javascript对象的简单记忆法
关于javascript对象方法的简单记忆法(个人整理) string对象: 大号小号闪烁加链接./big/small/blink/link/ 粗体斜体打字删除线./bold/italics/fixe ...
- linux之LVM
一.简介 LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵 ...
- NTP时间同步
1.设置NTP相关服务开机自启: # chkconfig ntpd on # chkconfig ntpdate on # chkconfig |grep ntp 2.启动NTP服务: # servi ...