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

Dan*_*iel 6 python recursion for-loop user-input

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

for set_k in data:
    for tup_j in set_k:
        for tup_l in tup_j:
Run Code Online (Sandbox Code Playgroud)

问题是,我希望嵌套for语句的数量根据用户输入的不同而不同.如果我想创造出产生的正数的函数用于像上面那些声明,我怎么会去这样做?

wim*_*wim 8

def nfor(data, n=1):
    if n == 1:
        yield from iter(data)
    else:
        for element in data:
            yield from nfor(element, n=n-1)
Run Code Online (Sandbox Code Playgroud)

演示:

>>> 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
Run Code Online (Sandbox Code Playgroud)

  • 请注意,`yield from`语法仅适用于Python 3. (3认同)
  • 是否真的值得注意这个语言的5年以上的功能了吗? (3认同)
  • 呃,我想很多人仍然使用Python 2作为遗留代码@wim.OTHO,我认为你确实有一点意义.如果人们现在还没有移植到Python 3,那不是你的问题. (3认同)