你好,我正在尝试制作一个 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)
实际上,您的问题很简单:您忘记在脚本末尾调用 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
而不是关键函数.