繁体   English   中英

尝试使用递归在列表中查找最长的字符串。 为什么我没有?

[英]Trying to find longest string in a list using recursion. Why am I getting none?

为什么我没有?

def find_longest(long:list):

    for i in range(len(long)):
        if long[i] == '' or long[i] == []:
            return long
        elif len(long[i])>len(long[i-1]):
            max_length = find_longest(long[i])

            return long.append(max_length)

print(find_longest(longest_strings))

追加不会返回任何内容。 你需要追加然后返回列表。

def find_longest(long:list):

    for i in range(len(long)):
        if long[i] == '' or long[i] == []:
            return long
        elif len(long[i])>len(long[i-1]):
            max_length = find_longest(long[i])
            long.append(max_length)
            return long

这样做的原因是因为list是一个可变数据类型,并且append只是改变列表而不是创建一个附加了新数据的列表的新实例。

找到最长字符串的更好方法是沿着这些方向:

def longest_string(strings):
    return max(strings, key=lambda x: len(x))

values = ['a', 'ab', 'abc', 'abcd']

print longest_string(values)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM