我想在python上做一个练习(我的版本是python33 练习如下:
编写一个函数find_longest_word1(),它接受一个单词列表并返回最长单词的长度。仅使用更高阶的函数。
我的尝试是:
def find_longest_word1(a):
out = max(list(map(len,a)))
print (out)
find_longest_word1(["This","is","a","listing"])
我得到的错误是:
max() missing 1 required positional argument 'b'
我已将一个列表作为参数传递。我是否需要给max函数提供一些其他参数?
答案 0 :(得分:5)
您调用的max()
函数不是standard built-in,而是名为max()
的其他函数:内置函数没有调用的参数b
所以错误信息可能与此无关。
请仔细检查您是否已定义(或导入)名为max()
的功能。如果我猜测,我希望定义看起来像这样:
def max(a, b):
...
您的代码在这里工作正常(使用内置的max()
):
In [50]: a = ["This", "is", "a", "listing"]
In [51]: max(list(map(len, a)))
Out[51]: 7
顺便说一句,调用list()
是不必要的:
In [52]: max(map(len, a))
Out[52]: 7
答案 1 :(得分:0)
你可以简单地使用密钥:
>>> my_list = ["This","is","a","listing"]
>>> max(my_list, key=len)
'listing'
你的问题是回复长度:
>>> len(max(my_list, key=len))
7