python中的最大值 - 错误丢失1必需的位置参数:'b'

时间:2014-12-27 16:13:17

标签: python arguments max typeerror

我想在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函数提供一些其他参数?

2 个答案:

答案 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