yield的用法是什么

这篇文章将为大家详细讲解有关yield的用法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

创新互联建站是一家专注于网站制作、成都网站设计与策划设计,遵义网站建设哪家好?创新互联建站做网站,专注于网站建设十余年,网设计领域的专业建站公司;建站业务涵盖:遵义等地区。遵义做网站价格咨询:028-86922220

我们一起看两个生成器相关的练习,主要是练习一下 yield 的用法。

问题 1

输入一个数字 n,写一个程序判断 0 到 n 之间的偶数,并用逗号分隔来输出。

比如输入:10

输出结果:0,2,4,6,8,10

 

题目分析

我们首先需要一个循环,找到 10 以内的所有数字,然后判断是否是偶数。题目要求用生成器的方式,我们只需要写一个生成器函数,在找到符合条件的数字后,使用 yield 输出。最后直接循环生成器,找到需要的值放入列表,最后用逗号分隔输出即可。

 

参考



def EvenGenerator(n):
   i = 0
   while i <= n:
       if i%2 == 0:
           yield i
       i += 1


n = int(input())
values = []
for i in EvenGenerator(n):
   values.append(str(i))

print(",".join(values))

   

问题 2

输入一个数字 n,写一个程序判断 0 到 n 之间的可以同时被 5 和 7 整除的数字,并用逗号分隔来输出。

比如输入:100

输出结果:

0,35,70

 

题目分析

此题目和上一个类似,你会发现这一次只是核心判断条件有变化,输入和输出不一样,但其实套路没变,还是用一个生成器函数,对应条件的地方用 yield 把数据返回即可。

 

参考:

def NumGenerator(n):
   for i in range(n+1):
       if i%5 == 0 and i%7 == 0:
           yield i

n = int(input())
values = []
for i in NumGenerator(n):
   values.append(str(i))

print(",".join(values))

上述两个练习都使用了 yield 把一个普通函数,变成了 generator 函数。这样 Python 解释器在处理这些代码时,会在调用这个生成器的循环中,遇到 yield 就返回一次值,并保存当前变量的状态,当下一次循环到来时,自动从上一次的状态继续往后计算。也就是我们需要的结果了。

关于yield的用法是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。


网站栏目:yield的用法是什么
新闻来源:http://scyanting.com/article/pdeccg.html