生成器是一种像列表和元组的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()))