如何从一组给定的单词中打印出最长和最短的单词?

时间:2014-03-10 17:54:53

标签: python list

我想要的是编写一个代码来检测列表中给出的最长和最短的单词。我试着写一个代码来找到最长的单词,使用失败的字符数真的很糟糕......我想知道是否有一个我缺少的简单函数或行。

mywords=['how','no','because','sheep','mahogany']

n = len(mywords)

a=0
while a < n:

print(( len( list(mywords[a]))))
a += 1

if a > n:
    break

虽然我确实得到了每个单词的字符数的打印但我无法弄清楚如何继续。

PS:我想知道如何根据从上面的函数

得到的值创建一个列表

3 个答案:

答案 0 :(得分:18)

您可以使用maxmin

>>> max(mywords, key=len)
'mahogany'
>>> min(mywords, key=len)
'no'

答案 1 :(得分:4)

仅仅为了多样性,这是另一种方法 -

#Finding Max-value
>>> reduce(lambda x,y: x if(len(x) > len(y))else y, mywords)
'mahogany'
#Finding Min-value
>>> reduce(lambda x,y: x if(len(x) < len(y))else y, mywords)
'no'

答案 2 :(得分:1)

以牺牲可读性为代价,您可以通过抓取按字长排序的列表版本的第一个和最后一个元素来同时获取两个元素:

mywords=['how','no','because','sheep','mahogany']

shortest, longest = (w[i] for i in (0, -1) for w in (sorted(mywords, key=len),))
print shortest, longest  # no mahogany