generator
生成器,不晓的为什么这么叫
用来生产元素的
新建list、dict时生成元素
import random
m1 = {}
for i in range(5):
x = random.randint(65,123)
m1[i] = {x: chr(x)}
print(m1)
m3 = {i:i*8 for i in range(5)}
print(m3)
#生成一个矩阵
li_2d = [[0] * 3 for i in range(4)]
li_2d[0][0] = 100
print(li_2d)
l2 =[]
for i in range(4):
s =chr(random.randint(65,123))
l2.append(s)
print(l2)
so
工厂生产产品的特性,它也有
按需生产,不消耗内存
不能回炉,只能接着上次的继续生产,只能next()
不能访问生成过的元素,产品出厂了还怎么访问
#在方法中
yield x # 生成x元素
#该方法就成了一个生成器
yield 同时也保存了当前的状态
可以使用nexit 重新回到中断的地方
继续刚在的继续执行
迭代器
迭代器 iterable
可以被next函数调用并不断返回下一值的对象成为迭代器iterator
isinstance([],Iterable) 判断是否时迭代器对象 但不是迭代器
整数不可以被迭代
可以使用iter() 函数变成可迭代的
没有next方法的不叫 迭代器
生成器时一个迭代器
iterator 是一个数据流
该对象可以被nexit调用不断返回下一个数据
数据流可以看作是一个有序的序列
只能next 按需计算
不能知道所有的长度
Iterator 表示一个无限大的数据流
for循环的对象都是Iterable对象
用于next函数的对象是Iterator类型
'''