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

本文介绍了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类型
'''
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值