在Python中查找字符串中长度最短的单词
我正在做一项作业,我需要有人输入一串单词,然后我的程序应该选择该字符串中最短和最长单词的长度。我成功地让它挑出了最长单词的长度:在Python中查找字符串中长度最短的单词,python,Python,我正在做一项作业,我需要有人输入一串单词,然后我的程序应该选择该字符串中最短和最长单词的长度。我成功地让它挑出了最长单词的长度: def longWord(string): alist = [] length = 0 for letter in string: if letter != " ": length +=1 else: alist.append(length)
def longWord(string):
alist = []
length = 0
for letter in string:
if letter != " ":
length +=1
else:
alist.append(length)
length = 0
return alist
因此,如果输入是“快乐日”,我的打印功能会告诉我最长的单词是5个字符
然而,就我的一生而言,我不知道如何写一些东西来找出输入字符串中最短单词的长度。我该怎么做?找到最小单词的最简单方法是使用min
函数和len
函数作为键
:
>>> s = 'Happy day'
>>> l = s.split()
>>> min(l, key=len)
=> 'day'
同样,要查找最长的单词,请使用max
:
>>> max(l, key=len)
=> 'Happy'
现在,简单的部分,为了得到它的长度,将上面的内容包含在
len
函数中:
>>> len(min(l, key=len))
=> 3
您可以尝试以下方法:
s = "This is a template sentence"
final_data = sorted(s.split(), key=len)
minimum = final_data[0]
maximum = final_data[-1]
如果您只想知道长度,而不想知道实际单词,可以使用:
def length(s):
l = map(len, s.split())
return max(l), min(l)
不,你没有找到最长的一个。
lambda x:len(x)
就是len
@Blender谢谢你指出这一点。请看我最近的编辑。排序比使用min
的线性搜索更昂贵是的,这当然有效。不过,这似乎很奇怪。我认为要获得长度,SolarFactorys的解决方案更合适。谢谢!我知道我想把事情复杂化。这比以前要容易得多。@StefanPochmann:是的。使用len
两次,我也觉得很奇怪。@A.N:很高兴能帮助巴迪。注意,这个答案假设为Python 2。在Python3上,您需要执行list(map(…)
。我知道但不确定max
或min
是否会计算生成器对象。max
和min
都接受生成器。问题是max
将耗尽发电机,然后min
将出错,因为发电机是空的。