我想要的是编写一个代码来检测列表中给出的最长和最短的单词。我试着写一个代码来找到最长的单词,使用失败的字符数真的很糟糕......我想知道是否有一个我缺少的简单函数或行。
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:我想知道如何根据从上面的函数
得到的值创建一个列表答案 0 :(得分:18)
您可以使用max
和min
。
>>> 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