如何从一组单词中打印最长和最短的单词?
我想写一段代码,从给定的单词列表中找出最长和最短的单词。我试着用字符数来找最长的单词,但结果非常糟糕……我在想是不是有什么简单的函数或者代码行我没想到。
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
虽然我能打印出每个单词的字符数,但我不知道接下来该怎么做。
另外,我想知道如何从上面函数得到的结果中创建一个列表。
3 个回答
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
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'
18
你可以使用 max
和 min
这两个函数。
>>> max(mywords, key=len)
'mahogany'
>>> min(mywords, key=len)
'no'