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)
#生成一个矩阵
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类型
'''
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值