Python 如何使用递归遍历列表中的所有值?

Python 如何使用递归遍历列表中的所有值?,python,recursion,Python,Recursion,如果我有一个列表,[1,3,152,100,200]。我希望遍历所有值,并返回所有超过100的值。但到目前为止,这个函数只返回152,这是超过100的第一个值,但它不遍历其余的值。我如何迭代列表的其余部分,然后将其作为列表返回?所以[152100200]。这里有一种方法 def recursion_list(number_list): if number_list == []: return [] if number_list[0] > 100:

如果我有一个列表,[1,3,152,100,200]。我希望遍历所有值,并返回所有超过100的值。但到目前为止,这个函数只返回152,这是超过100的第一个值,但它不遍历其余的值。我如何迭代列表的其余部分,然后将其作为列表返回?所以[152100200]。

这里有一种方法

def recursion_list(number_list):
    if number_list == []:
        return []
    if number_list[0] > 100:
        return number_list[0]
    else:
        return recursion_list(number_list[1:])

即使第一个元素满足您的条件,您仍然需要调用递归:

def recursion_list(number_list):
    list = []
    for i in (i for i in range(len(number_list)) if number_list[i] > 100):
        list.append(number_list[i])
    
    return list
对于此类练习,生成器有时更清晰:

def recursion_list(number_list):
    if not number_list:
        return number_list
    
    if number_list[0] > 100:
        return [number_list[0]] + recursion_list(number_list[1:])
    else:
        return recursion_list(number_list[1:])

    
recursion_list([1, 3, 152, 100, 200])
# [152, 200]

尝试此操作,您缺少一个递归调用:

def recursion_list(number_list):
    if not number_list:
        return
    
    first, *rest = number_list
    
    if first > 100:
        yield first

    yield from recursion_list(rest)

    
list(recursion_list([1, 3, 152, 100, 200]))

递归不一定是做到这一点的方法,你能不能只
[x代表x,如果x>100]

最简单的方法就是迭代:

def recursion_list(number_list):
    if not number_list:
        return []
    if number_list[0] > 100:
        return [number_list[0]] + recursion_list(number_list[1:])
    else:
        return recursion_list(number_list[1:])

print(recursion_list([102,23,12,205]))

这将返回[152200],因为100不大于100。

更好的选择是使用控制器“for”运行值数组(例如[1,3,152100,200])

def iteration_list(number_list):
    over_hundred = []
    for i in number_list:
        if i > 100:
            over_hundred.append(i)
    return over_hundred

这个问题类似:函数应该总是返回一个列表。如果
为真,则返回什么?
如果数字列表[0]>100
,考虑到
数字列表[0]
只是您当前查看的值,您应该返回什么值?当然是这个,但也许还有其他的?也许是通过递归确定的?
def recursion_list(number_list):
    sorted_list = []
    for value in number_list:
        if number_list == []:
            return number_list
        if value > 100:  # Considere using   >=   to integrate 100 in your array
            sorted_list.append(value)
    return sorted_list
    # Will give you [152, 200]