Python基础之第十二篇:yield生成器

 

生成器是一种像列表和元组的iterable,也叫做generator;有几点需要注意: 1.不允许使用索引进行索引访问,2.可以使用for循环进行遍历,3.语法yield用来定义生成生成器!
yield语句定义生成器向调用者提供结果,但是不破坏本地变量。

def countdown():
    i=5
    while i>0:
        yield i #yield:生成器的标志   语法: yield  i (i是定义的数)
        i -= 1
for i in countdown():
    print(i)

#素数的生成器(判断是不是素数)    也就是说只接受素数的传入:
def get_prime():
    num = 2
    while True:
        if is_prime(num):
            yield num
            num += 1
#生成器没有内存限制! 类似迭代器
# def my_sevens():
#     while True:
#         yield 7
#
# for n in my_sevens():
#     print(n)
#为满足条件的函数生成列表
# def numbers(x):
#     for m in range(x):
#         if m % 2 == 0:
#             yield m
# print(list(numbers(10)))

# def make_word():
#     word = ""
#     for ch in "spam":       #也验证了字符串在for...in...语句里面的规则
#         word += ch
#         yield word
# print(list(make_word()))

 

posted @ 2018-12-03 15:21  Tony学长  阅读(98)  评论(0编辑  收藏  举报