递归函数和列表

时间:2015-05-13 15:06:45

标签: python-2.7

我还在研究旧的测试,并且在这个递归任务中变得非常了解。

  

写一个递归函数" 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

1 个答案:

答案 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

相关问题