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

问题的提出
给出一个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!!!