如何找到Python列表中最长的字符串?

1,989 阅读2分钟

使用 Python 内置的max() 函数,带一个关键参数来查找一个列表中最长的字符串。调用max(lst, key=len) 来返回lst 中最长的字符串,使用内置的len() 函数来关联每个字符串的权重-最长的字符串将是最大的。

How to Find the Longest String in a Python List?

问题的提出

给出一个Python的字符串列表 。找到具有最大字符数的字符串--列表中最长的字符串。

下面是几个字符串列表的例子和所需的输出。

# ['Alice', 'Bob', 'Pete']   – -->   'Alice'
# ['aaa', 'aaaa', 'aa']      – -->   'aaaa'
# ['']                       – -->   ''
# []                         – -->   ''

解决方案:带有关键函数参数len()的max()函数

使用Python的内置 [max()](https://blog.finxter.com/python-max/)函数,带一个关键参数来查找一个列表中最长的字符串。调用max(lst, key=len) 来返回lst 中最长的字符串,使用内置的[len()](https://blog.finxter.com/python-len/)函数来关联每个字符串的权重--最长的字符串将是最大值。

这里是get_max_str() 函数的代码定义,该函数接收一个字符串列表作为输入,并返回列表中最长的字符串,如果列表为空,则返回ValueError

def get_max_str(lst):
    return max(lst, key=len)

下面是我们想要的例子上的输出。

print(get_max_str(['Alice', 'Bob', 'Pete']))
# 'Alice'

print(get_max_str(['aaa', 'aaaa', 'aa']))
# 'aaaa'

print(get_max_str(['']))
# ''

print(get_max_str([]))
# ValueError

边界案例:如果列表是空的怎么办?

如果你想在列表为空的情况下返回一个替代值,你可以修改get_max_str() 函数,以包括第二个可选参数。

def get_max_str(lst, fallback=''):
    return max(lst, key=len) if lst else fallback


print(get_max_str([]))
# ''

print(get_max_str([], fallback='NOOOOOOOOO!!!!!!'))
# NOOOOOOOOO!!!!!!

使用For Loop的解决方案

一个不太像Pythonic但对初学者来说更易读的版本是下面这个基于循环的

def get_max_str(lst, fallback=''):
    if not lst:
        return fallback

    max_str = lst[0]   # list is not empty

    for x in lst:
        if len(x) > len(max_str):
            max_str = x

    return max_str


print(get_max_str(['Alice', 'Bob', 'Pete']))
# 'Alice'

print(get_max_str(['aaa', 'aaaa', 'aa']))
# 'aaaa'

print(get_max_str(['']))
# ''

print(get_max_str([], fallback='NOOOOOOOOO!!!!!!'))
# NOOOOOOOOO!!!!!!

Python 列表中字符串的最大长度

要找到一个给定列表中字符串的最大长度,可以使用max(lst, key=len) 函数来获得具有最大长度的字符串,然后将这个最大的字符串传入len() 函数,以获得最大字符串的字符数。

len(max(lst, key=len))

这里有一个更详细的例子。

def get_max_length(lst):
    return len(max(lst, key=len))


print(get_max_length(['Alice', 'Bob', 'Pete']))
# 5

print(get_max_length(['aaa', 'aaaa', 'aa']))
# 4

print(get_max_length(['']))
# 0

print(get_max_length([]))
# Value Error!!!