python 生成器、迭代器,了解一下

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)

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类型
'''

猜你喜欢

转载自blog.csdn.net/java_sparrow/article/details/80716993