如何创建递归生成迭代函数的函数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何创建递归生成迭代函数的函数相关的知识,希望对你有一定的参考价值。

我目前有一些Python代码,如下所示:

for set_k in data:
    for tup_j in set_k:
        for tup_l in tup_j:

问题是,我希望嵌套for语句的数量根据用户输入的不同而不同。如果我想创建一个生成n个上述语句的函数,那么我该如何去做呢?

答案
def nfor(data, n=1):
    if n == 1:
        yield from iter(data)
    else:
        for element in data:
            yield from nfor(element, n=n-1)

演示:

>>> for i in nfor(['ab', 'c'], n=1):
...     print(i)
...     
ab
c
>>> for i in nfor(['ab', 'c'], n=2):
...     print(i)
...     
a
b
c

以上是关于如何创建递归生成迭代函数的函数的主要内容,如果未能解决你的问题,请参考以下文章

python-day5-生成器迭代器及递归调用

Python 是不是具有用于一阶递归关系的迭代递归生成器函数?

python--递归函数匿名函数嵌套函数高阶函数装饰器生成器迭代器

如何在python中将迭代函数转换为递归函数

模块调用,datetime,time,logging,递归,双层装饰器, json,pickle迭代器和生成器

第四课 函数补充--装饰器迭代器生成器匿名函数递归函数