IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发工具 -> Python进阶复习(一) -> 正文阅读

[开发工具]Python进阶复习(一)

函数式编程

lambdas匿名函数

解释:在传入函数的地方直接使用函数表达式。

示例:

list(map(lambdas x:x*x,[1,2,3,4,5]))

lambdas x是指lambdas关键字和使用的变量,冒号后为函数的表达式。

注:逗号及后边的列表是map函数,lambdas x:x*x 为map函数中function函数部分。

map和filter函数

解释:map是对每一元素做自定义的映射,filter是对序列每个元素进行过滤。

示例:

print(list(filter(lambdas x:x % 2 == 1,range(1,20))))

输出结果:[1,3,5,7,9,11,13,15,17,19]

print(list(map(lambdas x:x % 2 == 1,range(1,20))))

输出结果:[True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True, False, True]

迭代器

解释:迭代器是一个可以记住遍历位置的对象,迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束,两个基本方法:iter()和next()

示例:

list=[1,2,3,4]
it = iter(list)    # 创建迭代器对象
print (next(it))   # 输出迭代器的下一个元素

多次执行?print (next(it)) 会依次输出 it 里的元素,当迭代输出完成时,抛出StopIteration异常。

生成器

使用了yield的函数被称为生成器,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解,生成器就是一个迭代器,在调用生成器运行的过程中,每次遇到yield时函数会暂停并保存当前所有的运行信息,返回yield的值,并在下一次执行next()方法时从当前位置继续运行,调用一个生成器函数,返回的是一个迭代器对象。

yield生成器函数中一个重要的函数是send(),可以传入一个值作为返回值,此函数已包含next()函数。

生成器的有点:节省内存空间。

示例:

# 包含yield关键字,就变成了生成器函数
def foo():
    print('Starting.....')
    while True:
        res = yield 4
        print("res:", res)
# 下面调用函数并没有执行,可以先将后面的语句注释掉
# 逐行运行代码观察效果
g = foo()
print("第一次调用执行结果:")
print(next(g))
print("*" * 100)
print("第二次调用执行结果(传入参数):")
print(g.send(7))
print("*" * 100)
print("第三次调用执行结果:")
print(next(g))
print("*" * 100)

输出结果:

第一次调用执行结果:
Starting.....
4
****************************************************************************************************
第二次调用执行结果(传入参数):
res: 7
4
****************************************************************************************************
第三次调用执行结果:
res: None
4
****************************************************************************************************
注:输出4是因为函数运行遇到yield会输出yield的值并暂停,当遇到next()函数式才执行之后的操作。

装饰器

解释:装饰器是修改其它函数功能的函数,装饰器可以在不改变原有功能代码的基础上添加额外的功能,如用户验证、日志输出等。

示例:

def debug(func):
	def wrapper(abc):
		print('debug:enter')
		return func(abc)
	return wrapper

@debug
def say(abc):
	print ("hello {}!")

say('hello world')

输出结果:

debug:enter
hello {}!

递归

解释:函数调用函数本身。

示例:

def recursion(i):   #定义函数
    print(i)
    if i/2 > 1:   #判断递归条件,退出
        re = recursion(i/2)  #递归函数自身
        print('返回值:',re)
        return i
    print('上层递归值:',i)
    return i     #返回值

recursion(10)

输出结果:

10
5.0
2.5
1.25
上层递归值: 1.25
返回值: 1.25
返回值: 2.5
返回值: 5.0

集合

集合(set)是一个无序的不重复元素序列,可以使用大括号{}或者set()函数创建集合,空集合创建必须使用set(),{}创建的是空字典。

使用in来判断一个元素是否属于集合,

示例:

'abc' in set_a 

判断字符串abc是否属于集合set_a,结果返回True或False。

集合间的运算:

a - b # 集合a包含但集合b不包含的元素
a | b # 集合a或集合b包含的元素
a & b # 集合a和集合b都包含的元素
a ^ b # 不同时存在于集合a和集合b的元素

集合推导式:

a = { x for x in 'abcdefgabs' if x not in 'abc' }

输出:{'d', 'g', 's', 'f', 'e'}

添加元素:

a.add() # 把括号中的元素当成一个整体添加到集合中
a.update() # 把每一个字符作为一个单独的元素添加到集合中

移除元素:

a.remove() # 删除单个元素,删除首个符合条件的元素,按值删除
a.discard() # 同remove(),但没有对应元素不会报错
a.pop() # 删除单个或多个元素,按位删除(根据索引删除)

计算元素个数:

len(a)

清空集合:

a.clear()

内建模块itertools

这个模块里的函数都与迭代有关。

无穷迭代器:

itertools.count(start[,step]) # 从start开始以step为步长的无限序列
itertools.cycle('ab') # 一直循环a和b
itertools.repeat(elem[,n]) # 循环n次elem

根据列长度停止的迭代器:

itertools.accumulate(iterable[,func]) # 返回func功能后的iterable结果
itertools.chain(*iterable) # 返回多个可迭代对象的所有元素
  开发工具 最新文章
Postman接口测试之Mock快速入门
ASCII码空格替换查表_最全ASCII码对照表0-2
如何使用 ssh 建立 socks 代理
Typora配合PicGo阿里云图床配置
SoapUI、Jmeter、Postman三种接口测试工具的
github用相对路径显示图片_GitHub 中 readm
Windows编译g2o及其g2o viewer
解决jupyter notebook无法连接/ jupyter连接
Git恢复到之前版本
VScode常用快捷键
上一篇文章      下一篇文章      查看所有文章
加:2021-10-09 16:28:46  更:2021-10-09 16:28:53 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:49:58-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码