Python-带有打印的递归

标签 python list recursion printing

我需要打印列表的元素,这样如果一个元素是 100 或更大,则后面跟一个换行符,如果不是,则后面跟一个空格。

这是我到目前为止所拥有的:

def function(list):
    if list == []:
        return None
    elif list[0] >= 100:
        print(list[0], function(list[1:]), end = '\n')
    else:
        print(list[0], function(list[1:]), end = '')
    return None

但是当我尝试 list = [2,3,103, 8, 10] 时, Python 打印:

10 None8 None103 None

3 None2 None

有什么建议/帮助吗?

最佳答案

你走在正确的道路上。这就是您想要的:

def function(lst):
    if not lst:
        return
    elif lst[0] >= 100:
        print(lst[0], end='\n')
    else:
        print(lst[0], end=' ')
    function(lst[1:])

(我将 list 重命名为 lst,因为 list 是我们不想覆盖的内置类型)。

说明:如果我们在 print 调用中进行递归调用,我们会打印函数的返回值,该值始终为 None,因为它永远不会返回任何其他内容。所以我们必须把它移到外面。

此外,空列表的 bool 值为False,因此我们可以将lst == []替换为not lst,如下PEP 8推荐.

关于Python-带有打印的递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20305589/

相关文章:

algorithm - 递归到迭代 - 还是优化?

Python - Sympy - 以数值方式求解网格中多个参数的方程

java - 列表的范围和生命周期

python - 如何从Python中的列表中删除单引号

在这里找不到错误... C 代码

c - 二叉搜索树算法返回一个范围内的值数组

python - 为什么 pytest 总是说 "ImportError: attempted relative import with no known parent package"

Python 网络抓取工具在输入 520 个 url 时卡住。它出什么问题了?

c++ - boost::python 导出自定义异常

python - 有没有办法将数字添加到列表中元组的第一部分?