阶段01基础篇_D09_生成器generator|阶段01基础篇_D09_生成器generator 迭代器iterator 列表推导式
生成器generator 迭代器 iterator 列表推导式
生成器 generator
- 生成器与迭代器是一种,生成器的本质就是迭代器,唯一的区别:生成器是我们自己用python代码构建的数据结构。迭代器都是python提供的,或者转化得来的。
- 一个包含yield关键字的函数就是一个生成器函数
- 并且yield不能和return共用,并且yield只能用在函数内。
- 生成器Demo:
import time def generator_demo(n): "这个函数在每次循环时都会产生一个值,之后将其返还给它的调用者。" "有yield的函数称为生成器,这个函数就是生成器函数" for i in range(1, n+1): yield f"{i} square = {[i**2]}"g = generator_demo(10000)# 创建生成器对象 print(g)#
# 在一个for循环中时,在循环中每一次完成函数的yield语句后,控制权都会返还给函数 for i in g: print(i) time.sleep(1)
- 迭代是访问集合元素的一种方式;
- 迭代器是一个可以记住遍历的位置的对象。
- 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
- 迭代器有两个基本的函数iter() 和 next()
- 字符串,列表,元组对象都可以用于创建迭代器:
list = [1, 2, 3, 4]
it = iter(list)
print(next(it))# 1
print(next(it))# 2
- 迭代器对象可以用for遍历:
list = [1, 2, 3, 4]
it = iter(list)
for i in it:
print(i, end=" ")# 1 2 3 4
- 也可以使用next()函数:
import sys
list = [1, 2, 3, 4]
it = iter(list)
while True:
try:
print(next(it))
except StopIteration:
sys.exit()
?
列表推导式
- 描述:
- 是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。
- 共有三种推导式:
- 列表(list)推导式
l1 = [i for i in range(11) if i % 3 == 0] print(l1)# [0, 3, 6, 9]l2 = [i for i in range(1, 11)] print(l2)# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]l3 = [i**2 for i in range(1, 7)] print(l3)# [1, 4, 9, 16, 25, 36]
- 列表(list)推导式
- 字典(dict)推导式
d = {v.lower(): k.upper() for k, v in dict.items()} print(d)# {'apple': 'A', 'button': 'B'}
- 【阶段01基础篇_D09_生成器generator|阶段01基础篇_D09_生成器generator 迭代器iterator 列表推导式】列表(set)推导式
s1 = {i+i for i in "python"} print(s1)# {'tt', 'pp', 'yy', 'hh', 'oo', 'nn'}
推荐阅读
- 2018年11月19日|2018年11月19日 星期一 亲子日记第144篇
- 《魔法科高中的劣等生》第26卷(Invasion篇)发售
- 拍照一年啦,如果你想了解我,那就请先看看这篇文章
- 亲子日记第186篇,2018、7、26、星期四、晴
- 漫画初学者如何学习漫画背景的透视画法(这篇教程请收藏好了!)
- 两短篇
- 结营啦!
- Python基础|Python基础 - 练习1
- 第四十三篇接纳孩子的感受
- 感恩日记第111篇2020.02.06