如何在非条件表达式中编写此代码?

时间:2016-10-26 13:06:33

标签: python-2.7

def filt(lst,n):
    if len(lst) == 0:
        return []
    return ([lst[0]] if lst[0] >= n else []) + filt(lst[1:],n)

所以我想把最后一行写成“正常”,(即,在一行中不用“if”和“else”)任何方法都可以吗?

1 个答案:

答案 0 :(得分:0)

您需要将其分成两部分,并将filt(lst[1:], n)分别附加到两者。或者您可以将filt(lst[1:], n)转换为单独的变量:

def filt(lst,n):
    if len(lst) == 0:
        return []
    next_value = filt(lst[1:], n)
    if lst[0] >= n:
        return lst[0] + next_value
    else:
        return [] + next_value