三元表达式:
res = 结果1 if 条件语句 else 结果3 #条件成立返回结果1,否则返回结果2
li = ["元素%s" %i for i in range(10)] #['元素0', '元素1', '元素2', '元素3', '元素4']
li = ["元素%s" %i for i in range(5) if i > 3] #['元素4']
迭代器协议是指:对象必须提供一个next执行方法,执行该方法要么返回迭代器中的下一项,要么就引起一个stopIteration异常,以终止迭代。
可迭代对象:实现可迭代协议的对象(如何实现:对象内部定义一个__iter__())
l = [1,2,3,4]
iter_l = l.__iter__()
print(iter_l.__next__()) #1
print(next(iter_l)) #2
生成器:
1、生成器函数:使用yield而不是return语句返回结果。yield语句一次返回一个结果,在每个结果之间,挂起函数的状态,以便下次从它离开的地方继续执行
def test():
yield 1
yield 2
yield 3
yield 4 ,5 ,6
res = test()
print(res.__next__()) #1
print(next(res)) #2
print(next(res)) #3
print(next(res)) #(4, 5, 6)
2、生成器表达式:类似于列表推导,但是生成器返回按需求产生结果的一个对象,而不是立即产生结果。这也是生成器的优点
generator = ("元素%s" %i for i in range(10)] #['元素0', '元素1', '元素2', '元素3', '元素4') #注意是元组的形式,才是生成器
print(generator) #<generator object <genexpr> at 0x0000014CFDDC25E8>
print(generator.__next__()) #元素0
print(next(generator)) #元素1
[i for i in range(10)] #列表解析
(i for i in range(10)) #生成器表达式
生成器小结:
1、是可迭代对象
2、实现了延迟计算,省内存
3、生成器本质和其他数据类型一样,都是实现了迭代器协议。
4、生成器只能遍历一次
yield的特性:
1、相当于return控制的是函数的返回值
2、x = yield res 接收send(value)传过来的值赋给x,res依然是返回值
send相当于一次next,
############day18,19##########
python(8)迭代器、生成器
最新推荐文章于 2024-07-16 20:02:25 发布
本文介绍了Python中的三元表达式用法,详细阐述了条件判断与结果返回。接着讲解了迭代器协议的概念,强调了可迭代对象必须实现next方法。此外,还探讨了生成器的功能,包括生成器函数和生成器表达式的应用,并展示了如何通过yield关键字创建和使用生成器。最后,总结了生成器的特性,如延迟计算和内存效率。
摘要由CSDN通过智能技术生成