Python 查找列表中重复数字的最大序列

Python 查找列表中重复数字的最大序列,python,list,sequence,Python,List,Sequence,要解决的问题是找到列表中重复数字的最大序列。例如,如果列表是[2,3,4,4,4,4,5,4,7,6]并且我正在寻找4的最大序列,我将返回3 到目前为止,我只提出了一个循环来计算一行中指定数字的数量,但您必须考虑其他数字,并且还可以比较一行中的3“4”与2“4”。任何帮助都将不胜感激 def find(list): x = [2,3,4,4,5,5,5,5,6,7,8] print(find(x)) 上面的代码只是基本布局。我不需要整个函数的答案,只需要主要的逻辑和解释如果

要解决的问题是找到列表中重复数字的最大序列。例如,如果列表是
[2,3,4,4,4,4,5,4,7,6]
并且我正在寻找4的最大序列,我将返回3

到目前为止,我只提出了一个循环来计算一行中指定数字的数量,但您必须考虑其他数字,并且还可以比较一行中的3“4”与2“4”。任何帮助都将不胜感激

def find(list):
    x = [2,3,4,4,5,5,5,5,6,7,8]  
    print(find(x))

上面的代码只是基本布局。我不需要整个函数的答案,只需要主要的逻辑和解释

如果您试图用Python实现它,您应该使用
groupby
,默认情况下,将对象分组为
(对象名称,对象列表)
,因此:

a=[1,0,1,1,2,2,3]
groupby(a)~[(1[1]),(0[0]),(1[1,1]),(2[2,2,2]),(3[3])]
#我在这里使用“~”,因为它实际上不是一个列表,它是一个生成器,但是我知道
您可以轻松地使用列表理解来获取所需内容

从itertools导入groupby
重复_长度=[sum(1表示组中的u)表示u,groupby中的组(x)]
#“sum(1代表uin group)”是解决“group”不是一个列表且没有长度这一问题的一种方法

然后找到该列表的最大值。

您需要跟踪两个变量,连续值的当前计数
(计数)
,以及到目前为止的最大计数
(最大计数)
。当观察到不同的值时,可以重置
计数
并更新
最大计数
,然后继续循环

def get_longest_seq(l, val):
  count = 0
  max_count = 0
  for e in l:
    if e == val:
      count += 1
    elif count > 0:
      max_count = max(max_count, count)
      count = 0
  max_count = max(max_count, max) # case when the sequence is at the end
  return max_count

l = [2,2,3,2,2,2,2,3,3,4,4,4,5,4,4,7,6]
print(get_longest_seq(l, 4))

家庭作业的全部要点是你自己做。刚开始用蜡纸/蜡纸就可以了。另外,没有代码可以帮助您;你没有尝试过任何东西,也没有给出任何关于你解决这个问题的策略的线索。要做到这一点,有很多方法,首先进入我脑海的是暴力,另一种方法是询问家庭作业(1)注意你的学校政策:在这里寻求帮助可能构成作弊。(2) 指定问题是家庭作业。(3) 首先,真诚地尝试自己解决问题(在问题中包含代码)。(4) 询问现有实施中的具体问题;看见此外,还有关于提出家庭作业问题的指导。。这通常意味着,你需要的是与当地导师一起度过的时间,或是浏览教程,而不是堆栈溢出。最重要的是,每个教程都会教给你一系列相关的技术,而不仅仅是解决眼前的问题。特别是如果这是家庭作业,你很可能会得到零分,因为它会将所有算法工作转移到stdlib函数中。不用说,你不会学到上述libs背后的基础知识!您确定可以将
len()
与生成器一起使用吗?