我还在研究旧的测试,并且在这个递归任务中变得非常了解。
写一个递归函数" cut"将列表和数字作为参数,并返回一个列表,其中包含列表中小于参数中给出的数字的所有数字。
示例:
>>> cut([1,5,2,8,7,4,0,9], 5)
[1,5,2,4,0]
这是我想出来的,而且根本不起作用。我不知道如何制作新列表或如何可能的替代方案删除<给出论点
def cut(lista, tal):
a = 0
if not lista:
return a
print a
if lista[0] <= tal:
a = a + lista[0]
cut(lista[1:], tal)
有什么想法吗?我需要基础知识,而不是高级功能。我一直盯着这个看了一个多小时,现在无处可去:s
答案 0 :(得分:1)
实际上,你已经关闭但是你需要用a
初始化[]
并将递归结果连接到a
(从cut
内部返回的内容)。另外,如果您想查看列表,请先print
然后return
。否则,它无法访问。
def cut(ls, n):
if not ls: # base
return []
return (ls[:1] if ls[0] < n else []) + cut(ls[1:], n) # peeling + rest
请注意,在说明中,它写了less than
给定的数字,但您的示例也包含equal
结果。如果需要,请将其更改为ls[0] <= n
。