我需要打印列表的元素,这样如果一个元素是 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/