嗨,我正在尝试创建一个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)
答案 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)