这篇文章将为大家详细讲解有关yield的用法是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
我们一起看两个生成器相关的练习,主要是练习一下 yield 的用法。
输入一个数字 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))
输入一个数字 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的用法是什么就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。