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页的帖子,百分之九十都是无 ...
随机推荐
- 自己封装的一个无限滚动 mark 待传
@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/c ...
- Python socket (单线程)
client, 客户端 code : 客户端主要方法, s.send(); s.sendall(); s.recv(); s.connect() class Client(object): def _ ...
- Mac下升级Nodejs
突然发现系统中的nodejs版本比较旧,想升级一下但又不想下载安装包一步一步安装, 发现还是可以很简单用命令行升级的. 首先得清理npm的缓存 sudo npm cache clean -f 安装 n ...
- 学习django之python中os模块的函数
os.sep可以取代操作系统特定的路径分隔符.windows下为 “\\” os.name字符串指示你正在使用的平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是'pos ...
- Hyper-V初涉_共享式网络链接
任何一台计算机,如果不能与网络连通,可以说已经失去了大部分的功能,Windows 8尤是如此,虚拟机亦是如此. Hyper-V并不能对物理机的网卡进行识别,所以需要借助虚拟网卡通过物理机的网络共享实现 ...
- LNMP编译安装基于centos7.2
CentOS 7.0默认使用的是firewall作为防火墙,这里改为iptables防火墙. 1.关闭firewall: systemctl stop firewalld.service #停止fir ...
- html+css实现简易下拉菜单
<!DOCTYPE html> <html> <head> <style> div { width:100px; height:40px; overfl ...
- centos 清理内存缓存
读写文件时,Linux内核为了提高读写效率与速度,会将文件在内存中进行缓存,这就是Cache Memory(缓存内存).即使程序运行结束后,Cache Memory也不会自动释放.这就会导致程序频繁读 ...
- FileInputStream和BufferedInputStream的区别
FileInputStream 属于数据源 BufferedInputStream 属于FileInputStream的一个装饰 BufferedInputStream 有个内部缓冲区当read时会先 ...
- Mybatis 后台SQL不输出
在正确设置log4j.properties之后还是无法输出想要的SQL语句 经过搜索,发现是跟slf4j-api-1.6.1.jar这个jar包冲突了. 删掉之后就正常了, 但是这个包删掉的话acti ...