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

5

我想写一个代码来检测给定列表中最长和最短的单词。我尝试使用字符数量来查找最长的单词,但失败了...我想知道是否有一个简单的函数或代码行我遗漏了。

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个回答

18
你可以使用maxmin
>>> max(mywords, key=len)
'mahogany'
>>> min(mywords, key=len)
'no'

太棒了!这个可行!你能告诉我这里的“key”是什么意思吗?谢谢 ^_^ - iNuwanS
“key” 是用于比较元素的内容。在这种情况下,它将根据元素的长度进行比较。 - Jayanth Koushik

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'

最好只有一种明显的方法来完成它。 - Jayanth Koushik
1
@JayanthKoushik 嗯,最大值和最小值是显而易见的方法...但这是为了多样性和使用匿名函数很有趣... :P - Kamehameha
reduce函数现在在functools模块中(从py3k开始) - vaultah

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接