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

问题的提出
给出一个Python的字符串列表 。找到字符数最少的字符串--列表中最短的字符串。
下面是几个字符串列表的例子和所需的输出。
# ['Alice', 'Bob', 'Pete'] – --> 'Bob'
# ['aaa', 'aaaa', 'aa'] – --> 'aa'
# [''] – --> ''
# [] – --> ''
解决方案:min()函数,关键函数参数len()
使用Python的内置 [min()](https://blog.finxter.com/python-min/)函数和一个关键参数来查找列表中最短的字符串。调用min(lst, key=len) 来返回lst 中最短的字符串,使用内置的[len()](https://blog.finxter.com/python-len/)函数来关联每个字符串的权重--最短的字符串将是最小的。
下面是get_min_str() 函数的代码定义,它接收一个字符串列表作为输入,并返回列表中最短的字符串,如果列表为空,则返回ValueError 。
def get_min_str(lst):
return min(lst, key=len)
下面是我们想要的例子的输出。
print(get_min_str(['Alice', 'Bob', 'Pete']))
# 'Bob'
print(get_min_str(['aaa', 'aaaa', 'aa']))
# 'aa'
print(get_min_str(['']))
# ''
print(get_min_str([]))
# ValueError
边界案例:如果列表是空的怎么办?
如果你想在列表为空的情况下返回另一个值,你可以修改get_min_str() 函数以包括第二个可选参数。
def get_min_str(lst, fallback=''):
return min(lst, key=len) if lst else fallback
print(get_min_str([]))
# ''
print(get_min_str([], fallback='NOOOOOOOOO!!!!!!'))
# NOOOOOOOOO!!!!!!
使用For Loop的解决方案
一个不太像Pythonic但对初学者来说更易读的版本是下面这个基于循环的。
def get_min_str(lst, fallback=''):
if not lst:
return fallback
min_str = lst[0] # list is not empty
for x in lst:
if len(x) < len(min_str):
min_str = x
return min_str
print(get_min_str(['Alice', 'Bob', 'Pete']))
# 'Bob'
print(get_min_str(['aaa', 'aaaa', 'aa']))
# 'aa'
print(get_min_str(['']))
# ''
print(get_min_str([], fallback='NOOOOOOOOO!!!!!!'))
# NOOOOOOOOO!!!!!!
Python 列表中字符串的最小长度
要找到一个给定列表中字符串的最小长度,可以使用min(lst, key=len) 函数来获得具有最小长度的字符串,然后将这个最小字符串传入len() 函数,以获得最小字符串的字符数。
len(min(lst, key=len))
这里有一个更详细的例子。
def get_min_length(lst):
return len(min(lst, key=len))
print(get_min_length(['Alice', 'Bob', 'Pete']))
# 3
print(get_min_length(['aaa', 'aaaa', 'aa']))
# 2
print(get_min_length(['']))
# 0
print(get_min_length([]))
# Value Error!!!