有没有办法递归地写这个函数?

时间:2019-04-20 18:04:45

标签: python function for-loop recursion string-length

我还是编码的新手,我将如何递归执行此功能?该代码不需要固定,它可以按原样运行。相反,我正在尝试执行相同的功能,但以递归方式执行。目前,我只是使用for循环来运行代码。

     select t1.* from tablename t1
     where not exists( select 1 from tablename t2 
                 where t1.cid=t2.cid and attribute='void'

                 ) 
                 and exists ( select 1 from tablename t2 
                               where t1.cid=t2.cid
                             having count(distinct attribute)=2
                            )
                            and attribute in ('payment','delete')

举例说明此非递归函数的工作方式:

def longestSeqFinder(tryList):

    longestSeqList = []
    for i in tryList:
        longestSeq = (max(i, key = len))
        longestSeqList.append(longestSeq)

    return longestSeqList

1 个答案:

答案 0 :(得分:0)

一种方法是只计算传递到函数中的第一个元素的最大值,并将其添加到使用列表的其余部分调用自己的结果之前。

也就是说,

def get_longest(lst):
    return [max(lst[0], key=len)] + get_longest(lst[1:]) if lst else []

单线也! :)


稍作测试就可以完成这项工作:

>>> get_longest([['0', '234', '6', ''],
                 ['', '', '', '', '', '', ''],
                 ['012', '', '5678']])
['234', '', '5678']