Python无聊的总结

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

1 lambda x,y:x+y

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

lambda:上代码

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

 1 >>> lambda x:x
 2 <function <lambda> at 0x01B50730>#如果不作传递的话就是这样
 3 >>>
 4 >>>
 5 >>> la=lambda x:x+y
 6 >>> la(2)
 7 Traceback (most recent call last):
 8   File "<stdin>", line 1, in <module>
 9   File "<stdin>", line 1, in <lambda>
10 NameError: global name ‘y‘ is not defined
11 >>>
12 >>>
13 >>> la=lambda x,y:x+y
14 >>>
15 >>>
16 >>> la(1,2)
17 3

**返回值:

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

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

filter:

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

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

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

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

reduce

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

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

**带第三个参数的时候

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

map

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

 1 >>> map(add,range(10))#从这里可以看出和reduce读取参数的方式还是不同的。其实也差不多,因为reduce第三个参数有初始化
 2 Traceback (most recent call last):
 3   File "<stdin>", line 1, in <module>
 4 TypeError: add() takes exactly 2 arguments (1 given)
 5 >>>
 6 >>>
 7 >>> map(add,range(10),range(10))
 8 x=0 y=0
 9 x=1 y=1
10 x=2 y=2
11 x=3 y=3
12 x=4 y=4
13 x=5 y=5
14 x=6 y=6
15 x=7 y=7
16 x=8 y=8
17 x=9 y=9
18 [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
19 >>>
20 >>> map(ret,‘x‘)
21 x=x
22 [‘x‘]
23 >>>
24 >>>
25 >>> map(ret,(1,2))
26 x=1
27 x=2
28 [1, 2]
29 >>>
30 >>>
31 >>> map(ret,[1,2])
32 x=1
33 x=2
34 [1, 2]
35 >>>

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

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

generated by haroopad

时间: 2024-11-09 05:28:49

Python无聊的总结的相关文章

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

@property装饰器其实有点无聊,单独拿出来作为一个知识点其实没必要,尽管它可以将方法变成属性,让get和set方法更好用,但是,它破坏了python的简洁(不是代码的简洁而是指语法上). 下面来说明为什么我会这么说. 首先,看一个使用property. class Student(object): @property def testname(self): return self.name @testname.setter def testname(self,name): self.nam

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

1 #-*-coding:utf8-*- 2 import random 3 a=[] 4 b=[] 5 def init_array(): 6 for i in range(10000): 7 v = random.randint(1,10000) 8 a.append(v) 9 b.append(v) 10 11 #冒泡 12 def sort_array(a): 13 for i in range(len(a)): 14 for j in range(i+1,len(a)): 15 if

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

代码如下: 1 # 编辑者:闫龙 2 #将三次登陆锁定的作业改为: 3 # python login.py -u alex -p 123456 输入的形式 4 # (-u,-p是固定的,分别代表用户名和密码) 5 import sys 6 if(sys.argv[sys.argv.index("-u")+1] == "egon" and sys.argv[sys.argv.index("-p")+1] == "somebody"

一个无聊的python + opencv 示例

opencv不用多说,先推荐一个给力的教程: https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_tutorials.html 把tutorial中的例子都实现一遍,能够对opencv有个基本的了解,但是要做一些实际的东西,还是需要深入研究的. 今天这个文章很无聊,只想说明一个,就是图片本质是一个三维数组,使用numpy创建数组,用opencv显示,代码如下. import cv2 import nump

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

需要知识准备,pyhton基本常识,python的小数据池概念. 深浅拷贝操作需要模块导入:import copy emmm,对于python中的两种数据类型来说. 1.数字,字符串 2.列表,元祖,字典等 浅拷贝:a = copy.copy(b) 如果b是第一种数据类型.a,b的内存地址一致. 如果b是第二种数据类型,拷贝后,a与b的第一层内存地址不同.也就是说id(a) != id(b),但a,b内元素的内存地址依然一致. 深拷贝:a = copy.deepcopy(b) 如果b是第一种数据

无聊用python写了个爬虫,来爬我喜欢的图片

还未解决网页超时问题,先放着,爬到一半就没了. 首先看见自己喜欢的图片,忍不住要想下载,一个一个下又很麻烦,只好请求爬虫大大帮助啦. https://www.ivsky.com/bizhi/code_geass_t1300/ 网页分析: 首先:每一页都对应着,很多的图片 所以我们得先找到没一页对应得url,右键检查 发现对应得页数是以一个单位递增,所以我们已经找到所以页数得url 然后我们要提取,对应页图片下得url. 就会找到对应结点下得图片url,然后进入图片url 同样右键检查. 然后就可

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

menu = { '北京': { '海淀': { '五道口': { 'soho': {}, '网易': {}, 'google': {} }, '中关村': { '爱奇艺': {}, '汽车之家': {}, 'youku': {}, }, '上地': { '百度': {}, }, }, '昌平': { '沙河': { '老男孩': {}, '北航': {}, }, '天通苑': {}, '回龙观': {}, }, '朝阳': {}, '东城': {}, }, '上海': { '闵行': { "人

Python爬虫从入门到放弃(十一)之 Scrapy框架整体的一个了解

这里是通过爬取伯乐在线的全部文章为例子,让自己先对scrapy进行一个整理的理解 该例子中的详细代码会放到我的github地址:https://github.com/pythonsite/spider/tree/master/jobboleSpider 注:这个文章并不会对详细的用法进行讲解,是为了让对scrapy各个功能有个了解,建立整体的印象. 在学习Scrapy框架之前,我们先通过一个实际的爬虫例子来理解,后面我们会对每个功能进行详细的理解.这里的例子是爬取http://blog.jobb

python学习笔记--装饰器

1.首先是一个很无聊的函数,实现了两个数的加法运算: def f(x,y): print x+y f(2,3) 输出结果也ok 5 2.可是这时候我们感觉输出结果太单一了点,想让代码的输出多一点看起来不这么单调: def showInfo(fun): def wrap(x,y): print "The function before" func(x,y) print "The function after" return wrap def f(x,y): print