python中yield和yield from的区别(附代码理解)

本文通过两个实例对比,详细解析了Python中生成器的概念及其使用方式,特别是yield与yield from的区别,帮助读者更好地掌握生成器的用法。
s_list = ['a','b','c']
def generator_1(li):
	yield li

counter = 0
for i in generator_1(s_list):
	counter += 1
	print(i)
	
print(counter)

# 输出: ['a','b','c'] 1

s_list = ['a','b','c']
def generator_2(li):
	yield from li

counter = 0
for i in generator_2(s_list):
	counter += 1
	print(i)
	
print(counter)
# 输出:a b c 3

对比两个demo很明显可以看出,yield只是将普通函数变成生成器,yield一个值,迭代时可以得到一个值;而yield from是将后面的值变成一个可迭代对象,相当于如下操作:

s_list = ['a','b','c']
def generator_1(li):
	for i in li:
		yield i

counter = 0
for i in generator_1(s_list):
	counter += 1
	print(i)
	
print(counter)
# 输出:a b c 3

这样对比就很好理解了

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值