python的高级特性

  近期基于一些代码的改善,来介绍一下python里面非常有用的高级特性,让代码尽量简化且可读性高,提升开发效率。一、列表生成式

正常我们要去创建一个列表的时候,是这样做的:
#普通做法
L = []for x in range(1,11): L.append(x*x)print(L)打印出来的结果:[149162536496481100]
使用列表生成式的可以简化成这样:
L1 = [x1*x1 for x1 in range(1,11)]print(L1)打印出来的结果:[149162536496481100]

由上可见,一个列表循环生成列表直接用一行代码就实现了。1.2列表生成式中加入条件语句
myvalue = [x2 for x2 in range(1,11if x2%2 ==0]
用if...else..条件语句里面加入 if else,这时候条件语句要放前面
myvalue2 = [x3 if x3%2 ==0 else -x3 for x3 in range(1,11)]
二、生成器
    列表过大的时候,存储空间和读写难度都比较大,用生成器的方式,用算法推导出后续的元素,就不用创建完整的List,即节省了空间也提升了读取数据速度。    如下所示:
L2 = [x4*x4 for x4 in range(1,11)]print(L2)G2 = (x4*x4 for x4 in range(1,11))
L2为列表,G2为生成器,区别很小,就[]与()但是G2取值不能直接print(),要用其他方法,一个方法是用next(),但这个只能返回一个,一般不用,另外一个是直接用for i in G2直接遍历,如下所示:
L3 = []for n in G2:	L3.append(n)print(L3)
 一般生成器会用函数来写,生成器函数使用yield关键字来暂停函数执行并产生一个值,在需要下一个值的时候恢复执行,这种机制允许生成器按需生成值,无需一次将所有值加入内存中,从而节省空间,如下所示:
def fib(value):	n,a,b = 0,0,1	while n<value:		yield b		a,b = b,a+b		n = n+1	return "done"f = fib(10)L4 = []for x5 in fib(10):	L4.append(x5)print(L4)
三、迭代器
     list、tuple、dict、set、str还有上面的生成器和生成器函数,可以直接用for循环的对象统称为可迭代对象。

    生成器不但可以作用于for循环,还能被next()函数调用返回下一个值,这种可以被next()函数调用返回下一个值的对象称为迭代器。

    迭代器是一个实现了迭代器协议的对象,可以被next()函数返回,而生成器是一种特殊的迭代器,可以通过函数来创建,使用yield来返回。

迭代器示例:

mylist2 = [1,2,3,4,5]literator = liter(mylist2)
#使用next()函数遍历元素while True: try: element = next(literator) except StopIteration: break#没有元素时退出循环
posted @ 2025-05-15 16:53  寻虫测试  阅读(14)  评论(0)    收藏  举报