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页的帖子,百分之九十都是无 ...
随机推荐
- Eclipse JAVA项目的 目录结构 和 导入
说明:本文所有测试以java工程为例: 1. Eclipse下的java工程目录 eclipse的基本工程目录叫做workspace,每个运行时的eclipse实例只能对应一个workspace,也就 ...
- 『TCP/IP详解——卷一:协议』读书笔记——10
2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...
- JSON 基础解释.
JSON.(JavaScript Object Notation) JSON 指的是 JavaScript 对象表示法(JavaScript Object Notation) JSON 是轻量级的文本 ...
- hdu 5944 Fxx and string
\:nn,下标从1开始,第\:i\:i位的字母为\:s_isi,现在Fxx想知道有多少三元组\:(i,j,k)\:(i,j,k)满足下列条件 1.i,j,k\:i,j,k三个数成等比数列 2.s ...
- div错位/解决IE6、IE7、IE8样式不兼容问题
IE6里DIV错位的问题 原文:chinafine 采用”FLOAT:LEFT“的DIV在IE8.IE7.都没问题,IE6下却向下移动,出现空白.这是因为,IE6采用的内核默认把DIV之间的距离 ...
- 【设计模式之装饰者模式InJava】
需求:定义一个操作系统OS接口,安装Windows10操作系统,在上面安装虚拟机VMWare,虚拟机里装Linux; 然后在Linux中安装虚拟机VMware,再在虚拟机里安装MacOS操作系统. 实 ...
- ABP框架详解(三)Domain
此处的Domain主要指Abp类库根目录下Domain文件夹.顾名思义该目录下是用来存放与领域实体,领域逻辑执行,存储,领域服务相关的内容. 1.Entities (1)为整个Abp框架后期开发的所有 ...
- 多个div居中显示
页面中有多个div时我们希望并排居中显示,可以通过在并排显示的div上一层再加一个div,设定宽度,然后让其居中显示达到需要的效果. 关键是要对外层div设定宽度. <!DOCTYPE html ...
- ubuntu共享文件配置
目标:实现windows和linux混合组成的操作 系统中可以共享文件,并可以通过机器名互相访问 安装文件共享服务 0.更改本机主机名,修改 /etc/hostname文件和/etc/hosts文件中 ...
- windows下PHP与Apache的安装配置
1.下载安装apache:官网 http://httpd.apache.org/download.cgi#apache24 下载httpd-2.2.25-win32-x86-no_ssl.msi并安装 ...