我需要打印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,3,103,8,10]时, Python打印:
10无8无103无
3无2无
有任何建议/帮助吗?
答案 0 :(得分:1)
列表是保留字。
myList = [2,3,103, 8, 10]
for i in myList:
print(i, end = (i>=100) and '\n' or ' ')
答案 1 :(得分:1)
你走在正确的轨道上。这就是你想要的:
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 == []
替换为not lst
。
答案 2 :(得分:0)
在您的函数存在后,它返回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='')