Python 递归打印

2024-09-30 10:41:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要打印list的元素,这样如果一个元素是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,3103,8,10]时, Python印花:

10 None8 None103 None

3 None2 None

有什么建议/帮助吗?在


Tags: none元素returnifdeffunctionelselist
3条回答

列表是保留字。在

myList = [2,3,103, 8, 10]
for i in myList:
   print(i, end = (i>=100) and '\n' or ' ')

你在正确的轨道上。这就是你想要的:

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,因为它从不返回任何其他值。所以我们得把它搬出去。在

另外,空列表的布尔值是False,因此我们可以按照PEP 8的建议,用lst == []替换{}。在

函数存在后,它返回None,这就是print语句中有“None”的原因。只需将递归调用移到print之外

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

相关问题 更多 >

    热门问题