返回列表中最长单词的len

时间:2014-01-30 21:29:13

标签: python list python-2.7 maxlength

嗨,我正在尝试创建一个python程序,它将返回列表中最长单词的长度,但它对我来说效果不佳。

这是代码:

def find_longest_word():
   list1 = ['a','aa','aaa','aaaa','aaaaa','aaaaaa','aaaaaaa','aaaaaaaa',]
   max1 = ''
   for x in range (0, len(list1)):
      if (len(max1) < len(list1[x]) ):
          max1 = list1[x]
   return max1    


def main():
    m = find_longest_word()
    print len(m)

5 个答案:

答案 0 :(得分:8)

实际上,您的问题非常简单:您忘记在脚本末尾调用main函数:

main()

当你这样做时,会打印8,就像它应该的那样。


但是,如果您使用max及其key function,则可以更轻松地完成此任务:

>>> list1 = ['a','aa','aaa','aaaa','aaaaa','aaaaaa','aaaaaaa','aaaaaaaa',]
>>> max(list1, key=len)
'aaaaaaaa'
>>> len(max(list1, key=len))
8
>>>

修改

虽然我的上述解决方案工作正常,但我想提供一个我想到的更短的解决方案:

>>> list1 = ['a','aa','aaa','aaaa','aaaaa','aaaaaa','aaaaaaa','aaaaaaaa',]
>>> max(map(len, list1))
8
>>>

此解决方案使用map

代替关键功能

答案 1 :(得分:0)

这应该有效

mx=0
for word in list1:
    if len(word)>mx:
        mx=len(word)
#now max will contain the length of longest word

编辑:这可能不是理想的答案,但目的是提供与相关代码类似的代码。

答案 2 :(得分:0)

def find_longest_word():
    list1 = ['a','aa','aaa','aaaa','aaaaa','aaaaaa','aaaaaaa','aaaaaaaa',]  # this should be a parameter
    max1 = ''
    for x in range (0, len(list1)):  # you don't have to include 0 in this
        if (len(max1) < len(list1[x]) ): 
            max1 = list1[x]
    return max1    


def main():
    m = find_longest_word()
    print len(m)

你的缩进是错误的,虽然这可能是格式化粘贴在这里。一种更简单的方法,具有与您相同的结构:

def find_longest_word(lst):
    max1 = ''
    for x in lst:
        if (len(x) > len(max1)): 
            max1 = x
    return max1    


def main():
    m = find_longest_word()
    print len(m)

答案 3 :(得分:-2)

排序反向,你也可以获得最长的字符串

sorted(list1,key=len,reverse=True)[0]
'aaaaaaaa'

答案 4 :(得分:-2)

看看这个:

'''写一个函数find_longest_word(),它接受一个单词和列表 返回最长的长度。'''

a = ['mamao', 'abacate', 'pera', 'goiaba', 'uva', 'abacaxi', 'laranja', 'maca']

def find_longest_word(a):

    d = []
    for c in a:
        d.append(len(c))
        e = max(d)  #Try "min" :D
    for b in a:
        if len(b) == e:
            print "Length is %i for %s" %(len(b), b)