生成器;递归生成器

PEP 255 – Simple Generators | peps.python.org 生成器的使用 

Functional Programming HOWTO — Python 3.11.3 documentation 

附:

递归生成器的难点:Recursive Generators in Python - Prospero Coder

一个单词字母所有排序方式的程序:

 1 def permutation_generator(word):
 2     if len(word) == 0:
 3         yield ""
 4     else:
 5         for m in range(len(word)):
 6             for n in permutation_generator(word[:m] + word[m + 1:]):
 7                 yield word[m] + n
 8 
 9 for x in permutation_generator("home"):
10     print(x)

 

 部分output:

 

1、生成器的使用。list(生成器),next(生成器),不同方式获取生成器不同数值。

 2、send() 改变生成器的参数

 3、yeild和return的不同

用yield

1、当只是返回实例时,生成器执行但不打印

 2、当生成器next输出时,打印且yield回一个值

 3、第二次调用next,yield后面的程序行也被执行。

第二次获取next(),先运行yeild后面程序,输出值为上次保留的值。再从上次递归位置再次探索。

注意: flatten()生成器返回值具有可迭代性。

  4、yeild在迭代生成器中的提示如下。⭐⭐⭐⭐⭐⭐

 4、生成一个生成器实例,不运行生成器中的程序行,因此打印行均没有输出。所以,需要初始化生成器实例,需要next(b)进行初始化。 

 

 用return

 

 4、try except   异常捕捉相当于if else。不同点,if 执行后else不执行;但是try执行产生警告或错误,将被except捕捉,也就是存在try执行,except也执行的情况。

 

 

posted @ 2023-04-28 17:58  Aneverforget  阅读(33)  评论(0编辑  收藏  举报