python学习笔记--generator生成器

在代码中遇到了一个关键字yield,查yield遇到了generator生成器,查generator遇到了迭代。于是从后往前一点点看吧再见

迭代iteration

当我们建立了一个列表、元组或字符串时,我们能够逐个读取其中的内容,因此称之为可迭代对象。例如用列表生成式建立一个列表:

lsta=[x**2 for x in range(10)]
for x in lsta:
    print(x,end=' ')
# 0 1 4 9 16 25 36 49 64 81 

所有能够使用for...in...语法的都是迭代器,如列表(list)、元组(tuple)、字符串(str)、字典(dict)等,它们能够存储一定数量的元素并允许在其上进行特定操作。由于每一个元素都会占用特定的内存空间,因此当数据量非常大的时候其消耗的内存空间也将很大。如果我只是想按序读取而不需要将大量的元素全部存储在内存空间,那么生成器将会是一个很好的选择。

生成器generator

生成器是可迭代的,与列表类似,不同的是:生成器仅可读取一次,因为它并没有将所有元素放到内存中,而是实时生成数据。创建一个生成器代码如下:

gena=(x**2 for x in range(10))
print(gena) # <generator object <genexpr> at 0x0383FCF0>
for x in gena:
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值