在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
将出错,因为发电机是空的。