温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

yield的用法是什么

发布时间:2021-12-04 19:38:36 来源:亿速云 阅读:134 作者:柒染 栏目:大数据

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

我们一起看两个生成器相关的练习,主要是练习一下 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的用法是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI