我正在尝试使用以下代码找到列表中最长的数字序列
from itertools import groupby
ggg = groupby([1,2,3,3,3,5,88,9,9,9,9,9,9,9,1,1,1,2,2,3,3,3,3,3])
max(ggg, key=lambda k: len(list(k[1])))
但是,我得到错误'int'对象不可调用。另外,我使用的是python 3.
答案 0 :(得分:0)
代码对我来说很好:
>>> from itertools import groupby
>>> ggg = groupby([1,2,3,3,3,5,88,9,9,9,9,9,9,9,1,1,1,2,2,3,3,3,3,3])
>>> max(ggg, key=lambda k: len(list(k[1])))
(9, <itertools._grouper object at 0x019973F0>)
正如@FamousJameous所提到的那样,您正在使用的其中一个函数已被分配给一个整数。这是一个很好的说明,为什么你应该小心选择你选择的变量名称,因为它们可以擦除现有的功能。考虑:
>>> x = [1,2,3]
>>> len = len(x)
>>> len(x)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'int' object is not callable
答案 1 :(得分:0)
您的代码适用于Python 3.我最好的猜测是,您的问题来自于将len
,list
或max
指定为int
。例如:
>>> list_a = [1, 2]
>>> len(list_a)
2
>>> len = 4
>>> len(list_a)
Traceback (most recent call last):
File "<pyshell#3>", line 1, in <module>
len(list_a)
TypeError: 'int' object is not callable