(D15) Python-生成器

本文深入探讨生成器和迭代器的概念,解析生成器函数与表达式的语法及用途,通过实例展示如何使用yield语句创建生成器,以及介绍生成器的一次性特性。同时,文章还讲解了zip和enumerate等迭代工具函数的使用方法。

生成器 Generator


什么 是生成器?

	生成器是能够动态提供数据的可迭代对象
	生成器在程序运行时生成数据,与容器类不同,不会在内存中缓存大量数据,现用现生成

好处

	不占用计算机内存

生成器种类

	生成器函数
	生成器表达式

生成器函数的定义

	含有yield函数的语句是生成器函数,此函数被调用返回一个生成器对象
	yield:产生

Yield 语句

  • 语法
    -yield 表达式
  • 说明:
    yield 只用于def 目的是将此函数作为生成器 使用
    返回一个生成器对象,生成器对象是一个可迭代对象
    生成器是一次性的
    一旦生成结束,将不再生成新的数据

示例1:

def myin(n):
	i =0
	while 1<n:
	i += 1
for x in myin(3):
	print(x)
print('-'*50)
L = [x for x in myin(100) ]
print(L)

示例2:

def myeven(start,stop):
    while start<stop:
        if start % 2 == 0:
            yield start
        start += 1

evens = list(myeven(10,20))
print(evens)
for x in myeven(21,30):
    print(x)

生成器表达式

  • 语法:
    (表达式 for 变量 in 可迭代对象 [ if 真值表达式])
  • 作用:
    用推导式创建一个新的生成器
  • 说明:
    if 可以省略
    可以像列表生成时一样嵌套
  • 示例:
    gen = (x**2 for x in range(1,5))
    it = iter(gen)
    next(it) # 1

迭代工具函数

	 迭代工具函数的作用是生成一个符合条件的可迭代对象

zip(iter[,iter2[,…]])

	返回一个zip生成器对象用于生成一个元组此元组分别来自参数中的每一个可迭代对象,生成元祖的个数由最小的一个可迭代对象决定、

enumerate(iterable, start=0)

	返回一个enumerate生成器对象,此对象生成类型为(索引,键值)的元组,默认从0开始,也可以指定start。

示例zip:

	number = [10086,10000,10010,10001]
	names = ['移动','电信','联通']
	for t in zip(number,names):
	    print(t)

示例enumerate:

	names = ['移动','电信','联通']
	for n in enumerate(names,30):
	    print(n)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值